#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #мангуст
Вопрос:
Почему этот код не дожидается завершения поиска, а затем возвращается? Он возвращает пустой массив до завершения поиска.
const findAllUsers = () => {
const channelNames = [];
ATwitchStreamer.find({}, (err, res) => {
console.log(res)
res.forEach((user) => {
channelNames.push(user.username);
});
}).then(r =>
return channelNames);
return channelNames;
};
Ответ №1:
метод find является асинхронной функцией, поэтому вы можете использовать async / await
const findAllUsers = async() => {
const channelNames = [];
await ATwitchStreamer.find({}, (err, res) => {
console.log(res)
res.forEach((user) => {
channelNames.push(user.username);
});
})
return channelNames;
};
Ответ №2:
ATwitchStreamer.find
это обещание. Вы решаете это, возвращая цепочку обещаний:
return ATwitchStreamer.find(...)