猫鼬findOneAndUpdate返回未更新的模型

时间:2018-09-03 08:19:01

标签: mongodb mongoose

我有1个小问题。我正在尝试通过findOneAndUpdate方法更新模型。而且这种方法的效果出乎意料-数据库中的方法更新模型,但是返回旧模型(更新之前)

try {
  const updatedLanding = await Landing.findOneAndUpdate({key: req.body.key}, {
      $set: {
        name: req.body.name,

      }
    },
  ).exec((err, result) => {
    if (err) {
      res.status(422).send({error: err});
      return
    }
    res.send({response: result})
  });
}
catch (e) {
  res.status(400).send(e)
}

2 个答案:

答案 0 :(得分:1)

在猫鼬查询中,findOneAndUpdate返回已更新的旧记录,而不是已更新的记录,该记录实际上已被更新,但是由于查询默认返回旧记录,因此您无法获取更新的结果。要查看更新的记录,您必须发出另一个查询以查找记录并获取其更新的数据。

答案 1 :(得分:1)

如果使用findOneAndUpdate()钩子更新文档,除非指定,否则将获取旧文档 { new: true }