4

cappedMongo データベースのコレクション (ログ テーブルとして使用される) に一種の「ダッシュボード」を作成したいと考えています。これは私がコレクションを作成する方法です:

db.createCollection( "messages", { capped: true, size: 100000 } );

collection.find()オプションtailable:trueawaitdata:true、およびnumberOfRetries:-1(無限の再試行)を使用して、 を実行します。

私を困惑させているのは、find()。each()ループが新しいデータ(メッセージ)を待つことを期待していることです...代わりに(数秒後)エラーになります(No more documents in tailed cursor... :-()

これは私が取り組んでいるコードです:

var mongo = require('mongodb');  
mongo.MongoClient.connect('mongodb://127.0.0.1/myDb', function (err, db) {
  db.collection('messages', function(err, collection) {
    if (err) {
      return console.error('error in status collection:', err);
    }
    collection.find( // open tailable cursor
      {},
      { tailable: true, awaitdata: true, numberOfRetries: -1 }
    ).each(function(err, doc) {
      if (err) {
        if (err.message === 'No more documents in tailed cursor') {
          console.log('finished!');
        } else {
          console.error('error in messages collection:', err);
        }
      } else {
        if (doc) {
          console.log('message:', doc.message);
        }
      }
    })
  });
});

何が恋しいですか?

更新

今まで決定的な答えを受け取ってMongoDb tailable collectionsいないので、ゴールデンタイムの準備ができていないと推測します... :-(((

悲しいことに、より古典的で堅牢な fs ロギング ソリューションをあきらめています...

4

2 に答える 2