Mongoose findByIdAndUpdate没有返回正确的模型

时间:2015-05-24 02:45:32

标签: node.js mongodb mongoose

我有一个问题我以前没见过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);
    });

db中的原始文档如下所示:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 1'
}

updateObj进入如下:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 2'
}  

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

这感觉就像一个愚蠢的用户'错误,但我无法看到它。任何想法都非常感激。

1 个答案:

答案 0 :(得分:219)

在Mongoose 4.0中,new {和findByIdAndUpdate的{​​{1}}选项的默认值已更改为findOneAndUpdate(请参阅{{3}的#2262) })。这意味着在应用更新后,您需要将选项显式设置为false以获取新版本的文档:

true