当前位置: 首页 > 面试题库 >

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

彭允晨
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一

  • 问题内容: 我有一个典型的架构和模型: 当我执行此更新时,它仅在定义回调时才有效,否则仅执行但数据库中的值未更改: 这有效: 这是一个错误吗?我没有在文档中看到是否需要回调,但是要求这样做很奇怪……我认为我在这里缺少了一些东西。 注意:我通过电子邮件匹配以测试建议,我在NodeJS v0.8.17中使用猫鼬v3.5.4,并具有简单的Express v3.0.6设置。 提前致谢。 问题答案: 用猫鼬

  • 给定一个类Foo 为什么我用Spock来嘲笑Foo 调用总是返回false? 不确定这是否有区别,但测试是在Groovy/Spock中进行的,而Foo是在Java8中进行的。

  • 问题内容: 我有一个使用名为Todo的模型的路由设置,如下所示: 但是,todos.length始终为0,因为它找不到任何结果。当我跑步时: 我确定我已连接到同一数据库。我可以在mongod控制台中看到连接。我的连接位于config / db.js文件中: 我的server.js中的连接如下: 在Mongo Shell中,我得到1个结果。我期望此结果将由find查询返回。有什么我想念的吗?我正在使

  • 问题内容: 我正在研究猫鼬在mongodb中的数据库中列出一个集合中的所有数据: 根据要求: 我正在执行以下代码: 我已经在数据库中输入了条目,但是上面的代码返回了空值。为什么? 编辑:以下代码也返回空: 使用的架构: 问题答案: 您的问题是猫鼬将集合复数。猫鼬正在查询“组织”,但您的数据在mongodb中为“组织”。使它们匹配,您应该很好。您可以通过mongoshell在mongodb中对其重命

  • 问题内容: 我一直在努力让Mongoose从本地MongoDB实例返回数据。我可以在MongoDB Shell中运行相同的命令,然后返回结果。我在stackoverflow上找到了一篇帖子,谈论我在这里遇到的确切问题; 我已经遵循了这篇文章的答案,但是我似乎仍然无法正常工作。我创建了一个简单的项目,试图使事情变得简单,这是代码。 这是2 console.log语句的响应: 错误:空 用户名:nul