gpt4 book ai didi

javascript - Mongoose findOneAndUpdate 以不同顺序返回参数

转载 作者:行者123 更新时间:2023-12-01 02:21:36 29 4
gpt4 key购买 nike

我目前正在与 Mongoose 一起工作,我遇到了一些我觉得很奇怪的事情。

我的代码如下:

      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 打印 undefined/null。更改参数似乎是我的黑客行为,所以我想知道我在这里是否做错了一些明显的事情。

注意:req.user._id 可能不在 users 中。这就是我试图找到的错误。

查看此问题的答案:Mongoose: findOneAndUpdate doesn't return updated document ,看来答案和我是一样的。

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

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

最佳答案

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

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

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 保留的模式。

关于javascript - Mongoose findOneAndUpdate 以不同顺序返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com