无法使用等待mongodb查询中的变量

时间:2018-11-12 19:46:28

标签: javascript mongodb promise async-await

在另一个查询上使用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后端进行此类查询的最佳方法是什么? 谢谢。

1 个答案:

答案 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);
}