2015-07-05 215 views
0

我有下面的代码返回数据的数组:不能填充与猫鼬

var array = []; 
Collection.findOne({'name' : 'FirstItem'}, function(err, result) { 
    if (err) throw err; 
    array.push(result); 
}); 

现在猫鼬返回结果,因为它应该,但我不能将它添加到阵列 - 它仍然是空的。有什么问题?

+1

你在哪里检查数组? 'Collection.findOne'不是'async'函数吗? – fuyushimoya

+0

做'结果'包含数据吗? – gypsyCoder

回答

0

如果你写的代码,如:

var array = []; 
Collection.findOne({'name' : 'FirstItem'}, function(err, result) { 
    if (err) throw err; 
    array.push(result); 
}); 
// Do something with the array. 
console.log(array); 

array将是空在那里,因为当你调用Collection.findOne,它需要连接到数据库和检索数据,这将花费的时间。

因为没有阻止你的继承代码,它不会停留在那里等待接收结果,而是让其他代码仍然运行,并调用你获取数据时传递的函数在那之前,你array将是空

你应该做的是移动你的逻辑需要使用array,在该回调,如:

var array = []; 
Collection.findOne({'name' : 'FirstItem'}, function(err, result) { 
    if (err) throw err; 
    array.push(result); 
    // Do something with the array. 
    console.log(array); 
}); 
+0

非常感谢,它现在可以工作。我不是一个后端专家,我对这些事情没有太多经验。 –