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) {...