我正在开发一个新的实时新闻服务,现在我有一个我不知道如何解决的问题。

首先,当用户连接到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);
    });
});


因此,问题是...我怎样才能仅在最近的十个结果中第一次返回?

最佳答案

您是否尝试过限制查询?就像在queries下的mongoose.js文档中所示。

与您的代码将是

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);
  });
});

关于node.js - Mongoose 流第一次返回很少的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11075462/

10-16 21:15