首页 > 解决方案 > 如何在 lodash 的地图函数中获取 Mongoose findById 响应?

问题描述

我有一个带有 id 的数组,我需要在名为 Users 的集合(存在集合和模型)中查找这些 ID,以获取有关具有该 id 的用户的信息。

    var emails = _.map(toSendEmails,function(id){
        var userEmail = User.findById(id, function(err, user) {
            return user.email;
        });

        return userEmail;
    });

变量 toSendEmails 是一个 id 数组。

实际场景是 map 函数在 User.findById 返回任何值之前执行

我应该如何进行?

谢谢!

标签: javascriptnode.jsmongooselodash

解决方案


您可以从该函数返回一组承诺,_.map然后等待所有这些承诺得到解决以获取电子邮件列表。

var ePromises = _.map(toSendEmails,function(id){
    return User.findById(id).then(function (user) {
        return user.email;
    });
});

Promise.all(ePromises).then( function (emails){
    // do something with the emails
});

推荐阅读