如何在lodash的地图功能中获取Mongoose Findbyid响应



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

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

可变tosendemails是ID的数组。

实际情况是,地图函数在用户之前执行。findbyid返回任何值

我应该如何继续?

谢谢!

您可以从_.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
});

虽然有人肯定会很快出现以告诉您使用Promise.All,最简单的事情就是只使用(async)[https://www.npmjs。com/package/async]库来自NPM,它具有与Lodash相同的地图函数,可为您处理调用后流。

您可以使用 async/等待尝试一下。

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

最新更新