2016-06-12 72 views
2

我試圖從集合打印的所有數據和一些研究已經表明做到這一點的最好辦法是確定是否collection.forEach做

DB.collection('users').find({}).each((err, i) => { 
    console.log(i); 
}); 

這是偉大的,但運行的console.log在這個循環之前將會打印,並且我需要在返回所有項目後運行一些東西。

如果我可以一次檢索所有文檔,那將解決我的問題,否則我需要確定此循環何時完成,然後運行一些代碼來處理結果。

回答

1

由於MongoDB API並不直接映射預期的Node概念,因此弄清楚了這一點令人費解。

無論如何,MongoDB的find方法返回一個cursor object。這光標對象事實上確實實現each(以及其他有用的方法,如toArray。)

然而,callback需要參數,不只是一個。 [編輯:以前只有一個回調參數,轉錄錯誤由OP的問題]

DB.collection('users').find({}).each((error, i) => { 
    console.log(i); 
}); 

它的節點約定的回調的第一個參數是一個錯誤的對象,錯誤處理的目的。下一個參數是您的實際數據 - 在這種情況下是來自Mongo的記錄。

+0

是的,我真的這樣做,idk爲什麼我沒有在我給出的例子中,但這不是我遇到的問題,我遇到的問題是在返回所有結果後運行一些東西。我沒有問題,返回項目。 –

+0

然後也許使用toArray而不是每個?它帶有一個錯誤和一組返回記錄的回調,而不是逐個記錄。 – RyanWilcox

+1

是的!這正是我正在尋找的,謝謝! –