1

新しいリアルタイム ニュース サービスに取り組んでいますが、現在、解決方法がわからない問題があります。

まず、ユーザーが NodeJS サーバーに接続すると、Mongoose ストリームが作成されるため、このデータを簡単かつ迅速に返すことができます。

私が今抱えている問題は、最初はほんの数セットのデータを返し、次のコードではすべてのコレクションを返すことです:

io.sockets.on('connection', function(socket) {
    console.log("New user has been connected");

    var stream = News.find().tailable().stream();

    stream.on('error', function (err) {
      console.error(err)
    });

    stream.on('data', function (doc) {
      socket.emit("newArticle", doc);
    }); 
}); 

それで、問題は...どうすれば最新の10個の結果だけを最初に返すことができるでしょうか?

4

2 に答える 2

0

最後に、現在の時刻から30分を引いた時間からクエリを制限します。このようにして、初めてデータの小さなセットを取得します。

于 2012-06-18T20:50:51.300 に答える
0

クエリを制限しようとしましたか? queryの下の mongoose.js docs に示されているように。

あなたのコードでは、

io.sockets.on('connection', function(socket) {
  console.log("New user has been connected");

  var stream = News.find().tailable().limit(10).stream();

  stream.on('error', function (err) {
    console.error(err)
  });

  stream.on('data', function (doc) {
    socket.emit("newArticle", doc);
  });
});
于 2012-06-18T18:58:23.503 に答える