2012-11-23 115 views
0

在node.js服務器中,使用mongodb本機驅動程序,我想從遊標中檢索記錄,然後將它們輸出爲JSON。我有這個(簡體)異步檢索所有記錄,然後執行操作

var ans = {ids: []}; 
cursor.each(function(err, doc) { 
if (doc) { 
    ans.ids.push(doc.tag); 
} 
}); 
cursor.count(function(err, result) { 
ans.count = result; 
res.send(JSON.stringify(ans)); 
}); 

和結果是類似{ids:[], count: 3}。換句話說,查詢出現運行時不返回任何記錄。我認爲這是因爲數據已經在cursor.each回調運行之前發送。如何重新構造這個以確保在迭代之後發送?

回答

1

我找到了答案。爲cursor.each的例子說:「如果該項目爲null,則光標被耗盡/空的,封閉的」,所以:(處理省略錯誤)

var ans = {ids: []}; 
cursor.each(function(err, doc) { 
if (doc) { 
    ans.ids.push(doc.tag); 
} 
else { 
    cursor.count(function(err, result) { 
    ans.count = result; 
    res.send(JSON.stringify(ans)); 
    }); 
} 
}); 
+0

是的,這個文件是埋在示例代碼的' cursor.each' [docs](http://mongodb.github.com/node-mongodb-native/api-generated/cursor.html#each)。 – JohnnyHK

+0

即使您自己發佈以明確完整,您仍然可以接受此答案。 – JohnnyHK

+0

感謝您的提示,我已更新答案並鏈接到cursor.each文檔。 –

相關問題