Mongoose findByIdAndUpdate upsert在初始插入时返回空文档
这个基本的Mongoose模型代码在初始调用时返回一个空结果(gameMgr),但是在随后的调用中工作。 它不应该返回初始upsert上的填充结果对象吗? mongologging存在,并在相同的情况下第二次运行代码,一切正常,因为没有插入。
如果预期有一个空结果对象,那么创build一个新对象的适当模式是什么? (或者我重新加载另一个数据库调用,并进一步下降到callback疯狂?)
GameManagerModel.findByIdAndUpdate( game._id, {$setOnInsert: {user_requests:[]}}, {upsert: true}, function(err, gameMgr) { console.log( gameMgr ); // NULL on first pass, crashes node gameMgr.addUserRequest( newRequest ); } );
在Mongoose 4.0中, findByIdAndUpdate
(和findOneAndUpdate
) new
选项的默认值已经更改为false
(请参阅发行说明 )。 这意味着您需要明确地将该选项设置为true
以获取由upsert创build的文档:
GameManagerModel.findByIdAndUpdate( game._id, {$setOnInsert: {user_requests:[]}}, {upsert: true, new: true}, function(err, gameMgr) { console.log( gameMgr ); gameMgr.addUserRequest( newRequest ); } );