【问题标题】:Mongoose findOneAndUpdate returns parameters in different orderMongoose findOneAndUpdate 以不同的顺序返回参数
【发布时间】:2018-03-08 20:41:05
【问题描述】:

我目前正在使用猫鼬,我遇到了一些我觉得很奇怪的东西。

我的代码如下:

      Challenge.findOneAndUpdate({ _id: req.params.challengeId, users: req.user._id }, { $push: { submissions: submission._id } }, { new: true })
      .then(function(err, challengeUpdated) {
        console.log(challengeUpdated);
        console.log(err);
        if (err) {
          console.log('The error is : ');
          console.log(err);
          return res.status(401).json({ message: 'Error saving submission' });
        }
         else {
          return res.json(submission);
        }
      })

请注意我如何拥有function(err, challengeUpdated),在此处的文档中:http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate,它说应该是这种方式,但是当我记录它们时,我 err 打印对象,challengeUpdated 打印未定义/空值。改变周围的参数似乎我破解了,所以我想知道我在这里是否有明显的错误。

注意:req.user._id 可能不在users 中。这是我要查找的错误。

看看这个问题的答案:Mongoose: findOneAndUpdate doesn't return updated document,答案似乎和我一样。

希望其他人遇到这个问题?

注意:我使用的是 mongoose v5.5.1。

【问题讨论】:

  • 它说challenge 没有定义。你在任何地方定义了challenge 吗?
  • @Rupesh 这是 Node.js 猫鼬代码。
  • 我知道,但你必须定义你的 chalange 。如果你有任何架构。那么你需要像 var Challenge= require('path of your schema'); 这样的架构
  • 我已经通过切换参数暂时修复了它,但想再次检查这是否是 Kosher。
  • 是的,我需要在文件顶部提出挑战,我没有包括在内,因为我认为它与问题没有直接关系。

标签: javascript node.js mongodb mongoose


【解决方案1】:

您的问题是您在基于 Promise 的代码中使用 error-first callback arguments

使用Promise接口时应该是这样的:

Challenge.findOneAndUpdate({ _id: req.params.challengeId, users: req.user._id }, { $push: { submissions: submission._id } }, { new: true })
  .then((challengeUpdated) => {
    console.log('Success!')
    console.log(challengeUpdated)
  })
  .catch((err) => {
    console.error('An error occured', err)
  })

function(err, result) { } 是为回调样式代码保留的模式,而不是为 Promises 保留的模式。

【讨论】:

  • @SwimmingG 根据经验,当您看到 .then() 和/或 .catch() 时,您应该假设您正在使用 Promises,而不是回调。
  • 好吧有道理。再次感谢:)
猜你喜欢
  • 2016-01-26
  • 2017-10-14
  • 2019-05-01
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 2019-07-12
相关资源
最近更新 更多