#javascript #node.js #mongoose #async-await #asynchronous-javascript
Вопрос:
У меня есть функция getActiveUsers, которая помогает мне находить активных пользователей
const getActiveUsers = async (req, res) => {
let results = [];
const rewards = await Reward.find().distinct('data');
await rewards.map(async (reward) => {
const result = await Callback.findOne({
data: reward,
});
results.push(result);
});
return res
.status(400)
.json({ success: true, count: results.length, data: results })};
Сначала я хочу получить данные из коллекции вознаграждений, которые вернут 100 записей в массив вознаграждений. Дождавшись всех результатов, я хочу просмотреть полученный массив(награды) один за другим и получить данные из другой коллекции под названием Обратный вызов. И эти данные будут передаваться в другой массив, называемый результатами, один за другим.(Для этого я использовал функцию карты) После ожидания всех 100 записей в массив результатов я хочу отправить их в качестве ответа. Но, к сожалению, мой код не ждет функции карты. Он отправляет ответ в виде пустого массива(результатов). А затем запускает карту и помещает элементы в массив результатов. Пожалуйста, помогите мне исправить это, используя только асинхронное/ожидание. Если это невозможно, дайте мне лучшее решение.
Комментарии:
1.
const results = await Promise.all(rewards.map((reward) => Callback.findOne({ data: reward })));