我有一个scoping问题。首先,我搜索当前用户,一旦找到他或她的对象,我就访问他们的朋友数组。在这个friends数组中,存储了每个朋友的用户名。然后,我尝试在该friends数组上执行forEach循环,并尝试将每个找到的friend对象添加到名为friendsObjArr的数组中。当我用一个朋友和最后一个else语句中的res.json语句测试它时,它工作正常。但是我需要它在循环之外,所以每个朋友都被推了。问题是,循环结束后,数组中的数据也消失了。下面是我的代码:
function getFriends(req, res){
const username = req.params.userId
let friendsObjArr = []
User.findOne({username: username}, (err, foundUser) => {
if (err){
console.log(err);
}
else {
foundUser.friends.forEach(friend => {
User.findOne({username: friend}, (err, foundFriend) =>{
if (err){
console.log(err);
}
else{
console.log(foundFriend);
friendsObjArr.push(foundFriend)
}
})
});
res.json(friendsObjArr)
}
})
}
1条答案
按热度按时间rqdpfwrv1#
我建议你利用MongoDB的聚合管道来帮助你找到和分组用户,而不是自己做循环。每次迭代对象和查询数据库时,你可能会在js代码中遇到性能问题。
这里有一个MongoDB playground供您参考。