等待猫鼬解析数据后再返回

时间:2019-02-10 04:23:03

标签: node.js express

我试图遍历此数组并将用户对象附加到其中的每个对象。在将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 :(得分:1)

尝试一下,让我知道如何进行:

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