Articles of mongoose

Node.js,Express,Mongoose – inputvalidation – 在路由或模型中?

我有一个restapi资源,接受一个JSON文章。 例: { "location": { "coordinates": [ -122.41941550000001, 37.7749295 ] } 然后通过Express从请求中收集坐标: module.exports.create = function(req, res, next) { var coordinates = req.body.location.coordinates; …. 然后这些提交给一个mongoose模型。 我正在写这个testing,在这个地方。坐标缺less,例如 { "foo": { "bar": [ -122.41941550000001, 37.7749295 ] } 然后在模型的validation部分失败: locationSchema.path('location.coordinates').validate(function(coordinates){ ^ TypeError: Cannot call method 'validate' of undefined 所以我的问题是我将如何validationinput是正确的? 在进入模型之前,是否应该在路线上完成这项工作?还是应该在模型中完成? 任何例子,如何也将不胜感激。 作为参考,Mongoose模型看起来像这样: var locationSchema = new Schema({ userid: { […]

一对一与mongoose的关系?

我知道如何在Mongoose实体之间build立一对多的关系,使用下列types的代码: friends: [{type: ObjectId, ref: 'User'}] 但是如果我只想要一对一的关系呢 – 比如这个用户和哪个客户端有关系?

如何更新mongooseembedded式文档中的embedded式文档?

我在使用mongodb和mongoose的node.js中构build一个API。 目前,我在embedded式文档(模式中的模式)内embedded了一个文档,这个文档根本就没有保存到数据库中,而且我尽我所能,但没有运气。 我有用mongoose定义的模式: var BlogPostSchema = new Schema({ creationTime: { type: Date, default: Date.now }, author: { type: ObjectId, ref: "User" }, title: { type: String }, body: { type: String }, comments: [CommentSchema] }); var CommentSchema = new Schema({ creationTime: { type: Date, default: Date.now }, user: { type: ObjectId, ref: "User" }, body: […]

将多个DB / mongoose查询的结果呈现给express.js中的视图

考虑到mongoose(或者后缀或者redis)查询的asynchronous性质,当你在渲染视图之前需要做多个查询时,你会做什么? 例如,在会话中有一个user_id ,并且想通过findOne检索关于该特定用户的一些信息。 但是你也想显示最近login的用户列表。 exports.index = function (req, res) { var current_user = null Player.find({last_logged_in : today()}).exec(function(err, players) { if (err) return res.render('500'); if (req.session.user_id) { Player.findOne({_id : req.session.user_id}).exec(function(err, player) { if (err) return; if (player) { current_user = player } }) } // here, current_user isn't populated until the callback fires res.render('game/index', { title: […]

按date和时间按mongoose分类?

有人可以告诉我如何根据date和时间对一系列物品进行分类。 目前,我正在使用 image.find({reviewed:true }, null, {sort:{"submittedDate":-1}}, function (err, images) {}) 我的date模式是: submittedDate: Thu, 08 Nov 2012 15:42:47 GMT 但是这只是明智的select。 我想按时间先按datesorting 任何帮助将不胜感激。

为什么我不能用mongoose来validationembedded式文档? 什么是正确的方法来做到这一点?

我有这样的架构: var testSchema = new Schema({ foo: { type: String, required: true, trim: true }, bar: { fooBar: { type: String }, barFoo: { type: String } } }); 我必须根据foo值validationbar的值,如下所示: testSchema.path("bar").validate(function(bar){ if(this.foo === "someValue") //return custom validation logic 1 else if(this.foo === "anotherString") //return custom validation logic 2 else return false; }); 但是当我尝试打我的应用程序,我得到以下错误: /Users/Renato/github/local/prv/domain/models/testModel.js:34 testSchema.path("bar").validate(function(bar){ […]

Node.js摩卡unit testing错误重新:蒙哥马与Mockgoose嘲笑,“错误设置集合:会话TTL索引”

在GitHub上创build这个开放源码的应用程序,在Daftmonk的强大的Yeoman angular – 全堆生成器上构build的Outer / Partybot-web.git 。 我一直试图把我的技能包括在Node.js的testing(本地和CI)期间做MongoDB mock这个似乎很热的当代问题。 我是摩卡的粉丝,因为奔跑和柴的断言。 在淘汰了许多早期的竞争者之后,我现在正在用Mockgoose来嘲讽Mongoose模型来代替MongoDB。 在Travis的开放源代码partybot-web CI中也可以看到与这个问题有关的版本 到目前为止,这种configuration已经能够成功运行一些数据库操作,certificate了Mockgoose不是完全浪费时间。 然而,这个“会议”表似乎是在扼杀它。 请参阅下面的示例本地执行(Ubuntu 12),并让我知道如果任何节点向导有一个智慧的明珠… 非常感谢! -缺口 nick@om-ultrabook-ubuntu:~/Development/partybot-web$ mocha test/server/api/incoming/sms.js info – socket.io started Express server listening on port 3000 in development mode Error: Error setting TTL index on collection : sessions at /home/nick/Development/partybot-web/node_modules/connect-mongo/lib/connect-mongo.js:161:23 at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1404:28 at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1542:30 at /home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:159:22 at commandHandler (/home/nick/Development/partybot-web/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:678:48) […]

Node&Mongoose – 保存时出错:TypeError:Object.keys在非对象上调用

在下面的用户架构中有一个foobar.events字段,我试图推送新的哈希(从API POST请求接收)到。 var userSchema = mongoose.Schema({ foobar: { id : String, token : String, email : String, name : String, events : [{ action : String, timestamp : Date, user_xid : String, type : {type: String}, event_xid : String }] } }); 这是Express路线的逻辑: app.post('/foobar/post', function(req, res) { var jb_user_xid = req.body['events'][0]['user_xid']; var jb_timestamp = req.body['events'][0]['timestamp']; […]

在MongoDB中列出涉及用户的每个对话的最后一条消息

让我们说我有一个看起来像这样的消息的mongo数据库: { "_id": ObjectId("5458009c1ab2354c029d7178"), "to": "dan", "from": "wood", "message": "hi dan how are you?", "time": new Date(1415053468590), "__v": 0 } { "_id": ObjectId("545800b45eaf364d026c1cba"), "to": "wood", "from": "dan", "message": "hi wood how are you?", "time": new Date(1415053492125), "__v": 0 } { "_id": ObjectId("5458009c1ab2354c029d7178"), "to": "billy", "from": "wood", "message": "hi billy how are you?", "time": new Date(1415053468590), […]

MongoDB / Mongoose索引使查询更快或减慢?

我有这样的文章模型: var ArticleSchema = new Schema({ type: String ,title: String ,content: String ,hashtags: [String] ,comments: [{ type: Schema.ObjectId ,ref: 'Comment' }] ,replies: [{ type: Schema.ObjectId ,ref: 'Reply' }] , status: String ,statusMeta: { createdBy: { type: Schema.ObjectId ,ref: 'User' } ,createdDate: Date , updatedBy: { type: Schema.ObjectId ,ref: 'User' } ,updatedDate: Date ,deletedBy: { type: […]