nodejs响应返回空数组。 地图功能完成后如何返回响应
var follow = [];
User.findOne(
{ _id: id },
).then(user => {
user.following.map(results => {
User.find({ _id: results.user })
.exec()
.then(res => {
follow.push(res);
});
});
res.json({
status: true,
follow // returning null array
});
});
};
答案 0 :(得分:0)
您需要收集承诺并使用Promise.all()
来了解何时完成承诺:
User.findOne({ _id: id }).then(user => {
let promises = user.following.map(results => {
return User.find({ _id: results.user })
.exec()
.then(res => {
return res;
});
});
Promise.all(promises).then(follow => {
res.json({
status: true,
follow // returning null array
});
}).catch(err => {
console.log(err);
res.sendStatus(500);
});
});
请注意,如果您不打算从.map()
回调中返回任何内容,则在原始代码中没有理由使用.map()
。在我的代码中,我返回了承诺。