2015-05-26 30 views
0

我需要遍歷用戶的數組,並獲取有關每一個數據庫中的信息。我正在嘗試使用異步庫的映射函數,但我無法讓它接受我的迭代器。我有這樣的事情:許多異步數據庫獲取結果的查詢

async.map(arr, getInfo(id), function(err, results){ 
    // do stuff with the results 
} 

getInfo(id, callback){ 
    db.myCollection.find({query: params}, {projections: true}, function(err, info){ 
    callback(err, info) 
    }) 
} 

我得到的迭代器(x.value,功能(ERR,V){ ^ 類型錯誤:未定義是不是一個函數

其他錯誤中,同時嘗試不同的東西。基本上,我需要從分貝響應的數據結構在其中。

回答

1

是100%肯定我們需要看到您的陣列和數據,但是從你貼的代碼,它看起來像你'以錯誤的方式傳遞函數。

你傳遞一個已經收到一些參數的函數? 我假設你的數組中包含的ID,所以你應該通過函數以正確的方式映射:

變化:

async.map(arr, getInfo(id), function(err, results) 
         ^^^ 

到:

async.map(arr, getInfo, function(err, results){ 
+0

是啊,是照顧它。我仍然對如何操作getInfo中的數據感到困惑。我只是把它當作函數被調用一次,數組中的每個對象都被用作參數?是否需要從getInfo返回所需的結果或以某種方式自動執行? – user137717

+0

也db的查詢都是異步的,所以我從數據庫查詢回調或getInfo結束返回? – user137717

+0

map等待數組中的所有函數,因此必須在處理每個記錄(成功或失敗)後調用回調函數。而且你的函數應該就像它在一個記錄上運行一樣(因爲它實際上是這樣做的)。此外,如果這工作,我會很感激,如果你接受它作爲答案。謝謝! –