Tag: mongoose

mongoose自定义validation使用2个字段

我想使用mongoose自定义validation来validation,如果endDate大于startDate。 我如何访问startDate值? 当使用this.startDate时 ,它不起作用; 我弄不明白 var a = new Schema({ startDate: Date, endDate: Date }); var A = mongoose.model('A', a); A.schema.path('endDate').validate(function (value) { return diff(this.startDate, value) >= 0; }, 'End Date must be greater than Start Date'); diff是比较两个date的函数。

在节点模块中需要依赖另一个依赖项

我有一个简单的节点应用程序,在github上有另一个应用程序的单一依赖。 依赖关系在npm install安装得很好,但是当我尝试要求安装那里的东西时,它说它不可用。 例如,github应用程序将Mongoose作为依赖项安装。 我以为这个父应用程序将能够访问该模块,因为它是在一个孩子: var mongoose = require('mongoose') 结构看起来像这样: /app /node_modules /github_dependency [parent module] /node_modules /mongoose [child module] 我是否只需要在父应用程序中包含mongoose作为依赖项,或者是否有方法通过孩子访问该模块?

为什么我们需要,使用mongoose有什么好处

我刚刚开始使用mongodb ,最近我通过了一个ODM框架Mongoose 。 在文档上,我找不到为什么我们需要使用Mongoose 。 我可以给的一个原因是我们可以从Mongoose定义应用程序模式。 我正在寻找更多可能的原因,需要吸引我使用Mongoose 。 请列出为什么要使用Mongoose所有可能的优点和原因/需求。

使用Mongoose(MongoDB)查询嵌套文档

我从mongodb开始,努力查询嵌套的文档。 我有两个模式: var LinkSchema = new mongoose.Schema({ url: String, name: String }); var UserSchema = new mongoose.Schema({ name: String, links: [LinkSchema] }); 正如你所看到的,我只是搭build一个简单的书签工具。 每个用户都有一个名称和一组链接。 每个链接都有一个名称和一个url。 现在,我想要做的是,例如,看看某个链接是否已经存在于某人的链接数组中。 我想能够做这样的事情(试图获得弗拉德的链接集合,然后看看查询链接是否已经属于集合或不): app.get("/:query", function(req, res){ User.findOne({"name":"vlad"}, function(err, user){ user.links.find({"url":req.params.query}, function(err, foundLinks){ if(foundLinks){ res.send("link already exists!"); } else { res.send("link doesn't exist!"); } }); }); }); 当然,这段代码不起作用,因为显然我不能做一个“user.links.find()”。 我想我可以只做一个user.links.map来提取只有url,然后运行一个成员资格查询。 但是我认为这样做远不是正确的解决办法。 有一种方法可以使用数据库查询本地执行此类操作。 有人可以帮忙吗? […]

如何在相同的语句中使用填充和聚合?

这是我的约会collections { _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") } { _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") } { _id: ObjectId("518ee0bc9be1909012000002"), date: ISODate("2013-05-13T22:00:00Z"), patient:ObjectId("518ee0bc9be1909012000002") } 我使用聚合来获得结果 {date: ISODate("2013-05-13T22:00:00Z"), patients:[ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002"),ObjectId("518ee0bc9be1909012000002")] } 喜欢这个 Appointments.aggregate([ {$group: {_id: '$date', patients: {$push: '$patient'}}}, {$project: {date: '$_id', patients: 1, _id: 0}} ], …) 如何填充耐心的文件,我尝试这个,但不工作… Appointments.find({}).populate("patient").aggregate …. 换句话说,我可以使用填充和聚合在相同的语句 请任何帮助

mongoose密码哈希

我正在寻找一种使用mongoose将帐户保存到MongoDB的好方法。 我的问题是:密码asynchronous散列。 制定者不会在这里工作,因为它只能同步工作。 我想了两个办法: 创build模型的实例并将其保存在哈希函数的callback中。 在“保存”上创build预钩 这个问题有什么好的解决方法吗?

使用Mongoose中的.populate()返回某些字段

运行我的查询后,我从MongoDB返回一个JSON值。 问题是我不想返回与我的返回相关的所有JSON,我试图search文档,并没有find一个正确的方法来做到这一点。 我在想,如果可能的话,如果是这样的话,是什么方法呢? 例如:在DB中 { user: "RMS", OS: "GNU/HURD", bearded: "yes", philosophy: { software: "FOSS", cryptology: "Necessary" }, email: { responds: "Yes", address: "rms@gnu.org" }, facebook: {} } { user: "zuckerburg", os: "OSX", bearded: "no", philosophy: { software: "OSS", cryptology: "Optional" }, email: {}, facebook: { responds: "Sometimes", address: "https://www.facebook.com/zuck?fref=ts" } } 如果它存在一个用户,但是如果它不返回另一个字段,返回一个字段的正确方法是什么。 对于上面的例子,我想返回RMS的[email][address]字段和Zuckerburg的[facebook][address]字段。 这是我试图find如果一个字段为空,但它似乎没有工作。 […]

mongoose检索没有_id字段的数据

我想从我的Node.js应用程序中的Mongoose设置中检索一些数据。 我注意到,无论我作为字段select写什么,我总是得到_id字段。 有没有办法取得它? 这就是我现在的做法: Transaction.find({username : user.username}, ['uniqueId', 'timeout', 'confirmation_link', 'item_name'], function(err, txs){ console.log("user : " + user.username + " with txs: " + txs); callback(txs); }); 并logging包含_id字段的结果。

与名字types的mongoose领域

我试图validation和保存这个结构的护照configuration文件: http://passportjs.org/guide/profile/ 这是我提出的scheme: // Define the schema. schema = new mongoose.Schema({ // The name of this user, suitable for display. displayName: String, // Each e-mail address … emails: [{ // … with the actual email address … value: String, // … and the type of email address (home, work, etc.). type: String }], // A […]

Mongoose:ObjectId比较失败不一致

我有一个直接的工具来构build文档集合,然后自动格式化它们,以便在ExpressJS上编写EPUB或LaTeX渲染。 我使用Coffeescript,如果重要的话(我怀疑它)。 使用mongoose,我有以下几点: DocumentSchema = new Schema title: String Offrefs = new Schema ref: { type: ObjectId } isa: String BinderSchema = new Schema title: String contains: [Offrefs] Offrefs没有指定它引用的内容,因为我希望能够在其他活页夹中包含一些活页夹,以创build逻辑集合:“这些用于打印机”,“这些用于epub”,“这些仅限于Web, “等等(我已经把所有的杂项都删掉了。) 不幸的是,我已经跑到查询的地方,为检索的对象 (story._id == offref.ref) -> True 而且两人确实看起来一样。 但: (binder._id == offref.ref) -> False (String(binder._id) == String(offref.ref)) -> True 和最后两个引用中的两个ObjectId比较,它们是相同的ID号,但ObjectId对象不能正确比较。 我不想不断地进行string转换,当我将这些复杂的对象转换为数据树时,这是一个很大的可能性。 任何数据库中的树关系都是熊; 在MongoDB中它们不应该很难。 你如何在MongoDB中进行ObjectId比较?