无法从javascript / nodejs中的全局变量中检索数据

时间:2016-06-15 18:54:57

标签: javascript node.js

我试图将数据放入对象中。虽然循环中的这个对象具有值,但是这个循环外的对象没有值(空)。我有实例对象全局变量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 */

2 个答案:

答案 0 :(得分:1)

您的findOne回调运行异步,这意味着在将用户推送到obj(数组)之前,您的上一个console.log会运行。

在获取循环中的每个用户之后,您需要调用一个函数。试试async

答案 1 :(得分:1)

您对mongoose的查询是异步的。回调将仅在事件循环的下一次迭代/数据可用时执行。这就是为什么你看到obj为null。