1

我有一个包含超过 1000 个项目的集合(1000 个以下的项目是可以的。)当通过 ajax 调用请求时,这会导致以下错误和崩溃:(节点)警告:检测到递归 process.nextTick。这将在下一个版本的节点中中断。请使用 setImmediate 进行递归延迟。

这不会发生在本地开发中。(实际上与本地开发无关。我在本地机器上运行 pre v0.10.0,这个问题是 10.0 后的)

我正在使用 mongodb 数据库和猫鼬运行节点 v0.10.8。

但是什么是最好的解决方案?

见代码:

 Collection.find().select('_id', 'first_name').sort('startTime', -1).exec(function(err,                 

  docs){

            var data = {'aaData' : docs};
            res.send(data);

        });
4

1 回答 1

4

在结果集中有这么多文档,您应该使用 Mongoose 对流式查询结果的支持,不是将其放在一个大数组中。

var stream = Collection.find()
    .select('_id', 'first_name')
    .sort('startTime', -1)
    .stream();

stream.on('data', function (doc) {
  // do something with the doc like res.write(doc);
}).on('error', function (err) {
  // handle the error
}).on('close', function () {
  // the stream is closed, so complete the response with res.end();
});
于 2013-07-17T01:36:26.103 回答