Jon*_*Red 84 mongoose mongodb node.js
我有一个问题,我以前没有看到Mongoose findByIdAndUpdate没有在回调中返回正确的模型.
这是代码:
var id = args._id;
var updateObj = {updatedDate: Date.now()};
_.extend(updateObj, args);
Model.findByIdAndUpdate(id, updateObj, function(err, model) {
if (err) {
logger.error(modelString +':edit' + modelString +' - ' + err.message);
self.emit('item:failure', 'Failed to edit ' + modelString);
return;
}
self.emit('item:success', model);
});
Run Code Online (Sandbox Code Playgroud)
db中的原始文档如下所示:
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 1'
}
Run Code Online (Sandbox Code Playgroud)
updateObj进入如下:
{
_id: 1234
descriptors: Array[2],
name: 'Test Name 2'
}
Run Code Online (Sandbox Code Playgroud)
从回调返回的模型与原始模型相同,而不是updatedObj.如果我查询数据库,它已被正确更新.它只是没有从数据库返回.
这感觉就像一个'愚蠢的用户'错误,但我看不到它.任何想法都非常感激.
Joh*_*yHK 242
在Mongoose 4.0中,(和)new选项的默认值已更改为(请参阅发行说明的#2262 ).这意味着在应用更新后,您需要显式设置选项以获取新版本的文档:findByIdAndUpdatefindOneAndUpdatefalsetrue
Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59141 次 |
| 最近记录: |