Mongoose findByIdAndUpdate不返回正确的模型
我有一个问题,我以前没有见过与Mongoose findByIdAndUpdate不返回正确的模型在callback。
代码如下:
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); });
数据库中的原始文件如下所示:
{ _id: 1234 descriptors: Array[2], name: 'Test Name 1' }
updateObj进入如下所示:
{ _id: 1234 descriptors: Array[2], name: 'Test Name 2' }
从callback返回的模型与原始模型相同,而不是updatedObj。 如果我查询数据库,它已被正确更新。 它只是不从数据库返回。
这感觉像一个“愚蠢的用户”的错误,但我看不到它。 任何想法不胜感激。
在Mongoose 4.0中, findByIdAndUpdate
(和findOneAndUpdate
)的new
选项的默认值已更改为false
(请参阅发行说明的 #2262)。 这意味着在应用更新之后,您需要明确地将该选项设置为true
以获取新版本的文档:
Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...