在另一个查询上使用mongodb查询结果时遇到问题。 我希望这段代码能解释它(它是在异步函数中编写的)-请注意,我在第二个查询中使用了created_comment._id:
let created_comment = await Comment.create(new_comment, (err, newReturnedComment)=>{
if(err){
console.log(err);
}
});
await User.findOneAndUpdate({_id: req.user._id},{ $addToSet: {commentsIds: created_comment._id} },
function(err, updated_user) {
if (err) {
console.log(err);
}
});
因此,即使我在第一个查询中使用了wait,当我尝试访问created_comment变量时,我也什么也没得到。是因为create和findOneAndUpdate不是承诺吗?能否请我参考一份指南,该指南说明在Node.js后端进行此类查询的最佳方法是什么? 谢谢。
答案 0 :(得分:1)
如果要使用async
/ await
并期望调用返回承诺,请不要将回调传递给mongodb函数。只是写
try {
const created_comment = await Comment.create(new_comment);
const updated_user = await User.findOneAndUpdate({_id: req.user._id}, {$addToSet: {commentsIds: created_comment._id}});
} catch(err) {
console.log(err);
}