0
这里是我的代码片段。我正在尝试获取我的friends.friendsList的详细信息,它驻留在用户集合本身中,并且在那里插入用户的ID。所以首先我拿取userId
,然后提取他们的每一个细节。但我的问题是我没有得到friendsDetails
fetchDetailsfunction
之外的值。我尝试了很多次。我是新来的节点和帆JS。我认为它的异步执行问题。我怎么解决这个问题?执行之前在node.js中执行for循环的外部代码
getFriendsDetails:function(req,res){
var userId = req.param('id');
var friendsDetails=[];
User.findOne({
id: userId
}).exec(function(err,user){
var friendsIds=user.friends;
friendsIds.forEach(function(id){
User.findOne({
id: id
}).exec(function fetchDetails(err,Userdetails){
var obj={
id:Userdetails.id,
name:Userdetails.name,
pro_pic:Userdetails.profile_pic
}
friendsDetails.push(obj);
console.log(friendsDetails);//Here consoling pushed data correctly.
});
console.log(friendsDetails);//here i am getting null array
});
});
这是正常现象。在这里阅读一点,了解基本知识:https://www.codementor.io/nodejs/tutorial/manage-async-nodejs-callback-example-code – hlozancic