猫鼬不会执行findById回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猫鼬不会执行findById回调相关的知识,希望对你有一定的参考价值。

我开始失去理智。为什么这个简单的猫鼬命令不起作用?由于架构更改,我正在编写脚本来更新数据库中的项目,无论出于何种原因,我都无法使实际的更新方法正常工作。他们不会出错,也不会出错。他们只是不执行。我的脚本中的所有其他内容(与db连接交互)都可以正常执行。

这是我的代码的要旨:

const db = require('../../server/db');


async function itemMigration() {

  const items = await db.Items.find().exec();

  if (items) {
    items.forEach( async item => {
      console.log(item); // this works! It logs the item to my console.

      // this doesn't do anything.
      await db.Items.findById(item._id, (err, doc) => {
        if (err) {
          console.log(err)
        }
        console.log(item.type)
        doc.set(item);
        doc.save();
      })
    }
  }
}

我期望这段代码要做的是在我的数据库中找到所有的items,对其进行迭代,然后更新每个。第一部分按预期工作。我得到了项目,并将每个项目记录到控制台。 findById()部分是不执行的部分。我已经尝试过有/没有await命令...没什么区别。我应该在控制台上看到日志,但是都没有出现

答案

在这种情况下也需要等待[itemMigration()

以上是关于猫鼬不会执行findById回调的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬 findById 的异步/等待行为

用 sinon 模拟/存根猫鼬 findById

如何在 FindById 中进行循环,然后在猫鼬中发送响应?

猫鼬 findbyId 内部服务器错误

无法让猫鼬 findById() 工作

无法让猫鼬 findById() 工作