无法在javascript / nodejs中从全局variables中检索数据

我试图把数据放入一个对象中。 虽然循环中的这个对象有值,但这个循环中的对象没有值(空)。 我有实例对象全局variablesobj 。 我怎么了?

ps:findOne是mongoose的方法。 (MongoDB的)。

 var obj = []; for(var i = 0;i<anotherObj.length;i++){ var id = anotherObj[i].id; model.findOne({_id:id},function(err,user){ if(!err){ obj.push(user); console.log(obj); /* <= it has value */ } }) } console.log(obj); /* <= this is null */ 

您的findOnecallback运行asynchronous,这意味着您将最后一个console.log在将用户推送到obj(数组)之前运行。

在循环中的每个用户都被获取之后,您将需要调用一个函数。 尝试一下async软件包

你的mongoose查询是asynchronous的。 只有在事件循环的下一次迭代/数据可用时,才会执行callback。 这就是为什么你看到obj为空。