我有以下代码:
var array = [];
Collection.findOne({'name' : 'FirstItem'}, function(err, result) {
if (err) throw err;
array.push(result);
});
现在mongoose按原样返回结果,但是我无法将它添加到数组中 - 它仍然是空的。有什么问题?
答案 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);
});