Невозможно использовать переменную из запроса await mongodb - PullRequest
0 голосов
/ 12 ноября 2018

У меня проблема с использованием результата запроса mongodb для другого запроса.Я надеюсь, что этот код объясняет это (он написан внутри асинхронной функции). Обратите внимание, что я использую create_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);
                }
            });

, поэтому я использую ожидание в первом запросе.запрос, когда я пытаюсь получить доступ к переменной made_comment, я ничего не получаю.потому что create и findOneAndUpdate не являются обещаниями?Не могли бы вы отослать меня к руководству, которое объясняет, как лучше всего делать такие запросы на бэкэнде nodejs?Спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Не передавайте обратный вызов функциям mongodb, если вы хотите использовать async / await, и ожидайте, что вызовы вернут обещания. Просто напишите

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);
}
...