Как остановить ответ до выполнения всего кода, используя асинхронное ожидание

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