我试图将数据放入对象中。虽然循环中的这个对象具有值,但是这个循环外的对象没有值(空)。我有实例对象全局变量obj
。我有什么问题?
p.s:findOne是一种猫鼬的方法。 (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 */
答案 0 :(得分:1)
您的findOne回调运行异步,这意味着在将用户推送到obj(数组)之前,您的上一个console.log会运行。
在获取循环中的每个用户之后,您需要调用一个函数。试试async包
答案 1 :(得分:1)
您对mongoose的查询是异步的。回调将仅在事件循环的下一次迭代/数据可用时执行。这就是为什么你看到obj为null。