如果你寫的代碼,如:
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);
});
你在哪裏檢查數組? 'Collection.findOne'不是'async'函數嗎? – fuyushimoya
做'結果'包含數據嗎? – gypsyCoder