如何用猫鼬替换文档中的文本?

时间:2020-06-23 14:12:38

标签: javascript node.js mongodb mongoose

我正在尝试将“ switch”替换为“ on”,但是将其替换为“ off”,并尝试在数据库中立即将ID为“ 1”的文档替换为快照。 https://imgur.com/a/oE0t3Yc。我不知道该怎么做,因为我是猫鼬的新手。

这是我的架构。

async function switchon(){
  const replace = await cmdlogging.findOneAndUpdate(
    { switch: 'on' },
    { new: true }
  );
  await replace.findById(1);
}

还有我的index.js

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'findById' of null

错误是:

{{1}}

1 个答案:

答案 0 :(得分:2)

findOneAndUpdate需要一个filter才能将您的文档作为第一个参数进行匹配-因此,在您的情况下-当您尝试使用id 1更新文档时-您应该更改到:

async function switchon(){
  const updatedDocument = await cmdlogging.findOneAndUpdate(
    { _id: 1 },
    { switch: 'on' },
    { new: true }
  );
  // there's no need to call `findById` again, 
  // as replace holds already the updated document, since you've set { new:true } 
 return updatedDocument;
}