【发布时间】: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