【发布时间】:2015-06-30 17:13:56
【问题描述】:
我正在尝试从 MongoDB 上限集合中流式传输一些数据,如下所示:
var query = {};
var options = {tailable: true, awaitdata: true, numberOfRetries: Number.MAX_VALUE};
var stream = myColl.find(query, options).stream();
stream.on('data', function(doc){
console.log(doc);
}).on('error', function (error){
console.log(error);
}).on('close', function () {
console.log('closed');
});
这会按预期打印文档,但在到达集合末尾时,流会关闭。是否有可能防止这种情况发生?我希望程序在数据到达集合时打印数据,在集合结束时无限期地等待更多数据。
【问题讨论】:
-
由于某种原因,
awaitdata: true选项会导致此问题。几周前我遇到了这个问题。尝试仅使用{tailable: true}作为选项。 -
@BrianShamblen 在同一问题中尝试结果
var options = {tailable: true};。我也试过var stream = myColl.find().tailable().stream();你的代码在几周前工作了吗? -
是的,我需要编写一个 oplog 监视器。我遇到了同样的问题,光标一直关闭。删除 awaitdata 选项修复了它。
-
@BrianShamblen 奇怪该解决方案对我不起作用。您是否启用了任何其他选项(例如 numberOfRetries)
-
不,只有一个选项。可能我们正在运行不同的版本,这就是为什么它适用于我而不适用于你。我在 4.0.3