我有一个带有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
});