【问题标题】:Mongoose findOneAndUpdate return not updated modelMongoose findOneAndUpdate 返回未更新的模型
【发布时间】:2018-11-15 19:11:39
【问题描述】:

我有 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)
}

【问题讨论】:

  • updatedLanding的值是多少?
  • 猫鼬:landings.findAndModify({ key: '018d803bcf5aaf902e4ee5af' }, [], { '$setOnInsert': { created_at: new Date("星期一,2018 年 9 月 3 日 08:42:18 GMT" ) }, '$set': { name: 'New Name', updated_at: new Date("Mon, 03 Sep 2018 08:42:18 GMT") } }, { new: false, upsert: false, fields: { } })
  • 使用new: true获取更新的文档...Landing.findOneAndUpdate({key: req.body.key}, { $set: { name: req.body.name } }, {new: true})
  • 谢谢。作品:)

标签: mongodb mongoose


【解决方案1】:

在mongoose查询中,findOneAndUpdate返回的是已经更新的旧记录,而不是更新的记录,记录实际上已经更新了,但是你不能得到更新的结果,因为查询默认返回旧的,如果你想要查看更新的记录,您必须发出另一个查询来查找记录并获取其更新的数据。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2021-01-02
      • 1970-01-01
      • 2015-01-19
      • 2019-07-12
      • 2016-01-26
      • 2020-08-10
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多