Подождите, пока Mongoose разрешит данные, прежде чем вернуться - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь перебрать этот массив и добавить пользовательские объекты к каждому объекту внутри.Как мне дождаться завершения каждого из них, прежде чем возвращать JSON клиенту?

       Match.find()
        .or([{ user_id: req.user._id }, { second_user_id: req.user._id }])
        .exec((err, result) => {
            if (err) {
                return res.sendStatus(500);
            }

            result.map(async match => {
                match.user = await User.findById(req.user._id).exec();
            });

            return res.json({ matches: result });
        });

В этом случае массив возвращается клиенту, прежде чем Mongoose сможет решить запросы findById.

1 Ответ

0 голосов
/ 10 февраля 2019

Попробуйте и дайте мне знать, как это происходит:

  Match.find()
    .or([{ user_id: req.user._id }, { second_user_id: req.user._id }])
    .exec(async(err, result) => {
        if (err) {
            return res.sendStatus(500);
        }

        const results = await Promise.all(result.map(async match => {
            match.user = await User.findById(req.user._id).exec();
        }));

        return res.json({ matches: results });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...