猫鼬findByIdAndUpdate没有返回正确的模型

我有一个我以前从未见过的问题,猫鼬的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);

});

数据库中的原始文档如下所示:

{

_id: 1234

descriptors: Array[2],

name: 'Test Name 1'

}

进入的updateObj如下所示:

{

_id: 1234

descriptors: Array[2],

name: 'Test Name 2'

}

从回调返回的模型与原始模型相同,而不是updatedObj。如果我查询数据库,它已正确更新。它只是没有从数据库中返回。

这感觉像是一个“愚蠢的用户”错误,但我看不到它。任何想法表示赞赏。

回答:

在Mongoose

4.0中,(和)new选项的默认值已更改为(请参阅发行说明中的#2262

)。这意味着在应用更新后,您需要显式设置选项以获取新版本的文档:findByIdAndUpdate``findOneAndUpdate``falsetrue

Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...

以上是 猫鼬findByIdAndUpdate没有返回正确的模型 的全部内容, 来源链接: utcz.com/qa/401528.html

回到顶部