1
對於日誌查看器,我必須將更新寫入sockJS套接字的mongoDB集合中。mongoDB + nodeJS:無法保持流遊標打開
基於this post,我使用本地nodeJS驅動程序的流遊標來完成此操作,但它僅適用於創建流時集合中存在的內容。沒有進一步的更新被寫入。
這裏是我的代碼:
var server = new mongodb.Server(config.db_host, config.db_port, {});
var DB = new mongodb.Db('myLogs', server, {w:0}).open(function (error, database) {
if (error) throw error;
db.logs = database.collection('logs');
});
var stream = db.logs.find({user: sID}, {sort: [['_id', 'asc']]}).stream();
stream.on('error', function (err) {
socket.write(JSON.stringify({'action': 'log','param': 'log db streaming error'}));
});
stream.on('data', function (doc) {
socket.write(JSON.stringify({'action': 'log','param': doc.log}));
});
我在做什麼錯?這可以工作嗎?
我想你還想包括'awaitdata:true'選項。 – JohnnyHK 2013-03-06 22:25:43
是的,我忘了。 – WiredPrairie 2013-03-07 01:07:52
非常感謝。 我試過了,並做了這個改變,並且把集合的創建改爲了'db.logs = database.collection('logs',{'capped':true,'size':10000});'。我之前已經棄置了舊的收藏品,開始整理。 但是,我得到一個錯誤告訴我,我只能創建一個加蓋集合的可拖動遊標。我需要做更多的事情才能使我的收藏達到上限嗎? – 2013-03-07 08:31:09