节点,快递,猫鼬。
我正在尝试从回调中将Array作为元素添加到Array中。
app.get('/view', function(req, res){
var csvRows = [];
Invitation.find({}, function(err, invitations){
if(err){
console.log('error');
} else {
invitations.forEach(function(invitation){
Guest.find({_id: invitation.guests}, function(err, guest){
if(err){
} else {
var rsvpURL = 'url'+invitation._id;
var csvRow = [guest[0].firstName,
guest[0].addr1,
...,
rsvpURL];
csvRows.push(csvRow);
}
});
});
console.log(csvRows);
res.send(csvRows);
}
});
});
数组没有添加任何内容。任何想法都将不胜感激。
答案 0 :(得分:1)
在每个找到的访客上等待Promise.all
,返回一个解析为所需行的承诺:
app.get('/view', function(req, res){
Invitation.find({}, async function(err, invitations){
if(err){
console.log('error');
return;
}
const csvRows = await Promise.all(invitations.map(function(invitation){
return new Promise((resolve, reject) => {
Guest.find({_id: invitation.guests}, function(err, guest){
if(err){
console.log('error');
reject();
}
const rsvpURL = 'url'+invitation._id;
const csvRow = [guest[0].firstName, guest[0].addr1, rsvpURL];
resolve(csvRow);
});
});
}));
console.log(csvRows);
res.send(csvRows);
});
});