Voici mon extrait de code. J'essaye d'obtenir des détails de mes amis. La liste d'amis est dans la collection d'utilisateurs elle-même et là j'insère l'identification des utilisateurs. Donc d'abord je vais chercher userId
, puis aller chercher chacun de leurs détails. Mais mon problème est que je ne reçois pas les valeurs de friendsDetails
en dehors du fetchDetailsfunction
. J'ai essayé beaucoup de temps. je suis nouveau au noeud et aux voiles js. Je pense à son problème d'exécution asynchrone. Comment puis-je résoudre ce problème? Comme l'a dit hlozancic, le comportement est tout à fait conforme à la norme deCode en dehors de la boucle d'exécution avant l'exécution dans node.js
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
});
});
Ce comportement est normal. Lisez un peu ici pour en savoir plus sur les bases: https://www.codementor.io/nodejs/tutorial/manage-async-nodejs-callback-example-code – hlozancic