无法使用mongoose返回的数据填充数组

时间:2015-07-05 07:04:19

标签: javascript node.js mongodb mongoose

我有以下代码:

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

现在mongoose按原样返回结果,但是我无法将它添加到数组中 - 它仍然是空的。有什么问题?

1 个答案:

答案 0 :(得分: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);
});