#javascript #node.js #mongodb-query
#javascript #node.js #mongodb-запрос
Вопрос:
Как эта функция возвращает null? это из-за области видимости переменной или времени выполнения функций?
async function getBook() {
var book;
await libray.findONe({ cat: 1 }, {}, async (err, res) => {
await section.findONe({ secId: res.secI }, {}, (error, result) => {
book = resu<
});
});
book = resu<
}
return book;
}
Комментарии:
1. Вы никогда не добьетесь успеха здесь, смешивая обратные вызовы и
await
.await
делает что-то полезное только тогда, когда ожидает обещания, и когда вы передаете обратный вызов своим функциям базы данных, они не возвращают обещание. Пожалуйста, уделите секунду, чтобы узнать, чтоawait
на самом деле делает и как это использовать, и как использовать promises с вашей базой данных. Вы не можете просто проходить иawait
в любом месте и ожидать, что это сделает что-то полезное.
Ответ №1:
Попробуйте это
async function getBook() {
const res = await libray.findOne({ cat: 1 });
const book = await section.findOne({ secId: res.secI });
return book;
}
Ответ №2:
Я думаю, проблема в том, что вы возвращаетесь из функции до завершения асинхронной функции. итак, один из удобных способов решить эту проблему — создать функцию обратного вызова из асинхронной функции.
Извините, я не специалист по js, поэтому я не могу опубликовать код, но я думаю, вы поняли идею..