jor*_*cke 2 streaming mongoose mongodb node.js
当新文档被另一个应用程序插入到集合中时,我正在尝试设置MongooseJS来推出整个集合(或者只是最新的项目).
我假设QueryStream是要走的路.
但是,当我启动我的简单应用程序时,它会读出一次该集合并关闭它.
当我插入新文档时没有任何反应(假设连接不再打开并寻找新结果......?)
var Orders = db.model('orders', OrderSchema);
var stream = Orders.find().stream();
stream.on('data', function(doc){
console.log('New item!');
console.log(doc);
}).on('error', function (error){
console.log(error);
}).on('close', function () {
console.log('closed');
});
Run Code Online (Sandbox Code Playgroud)
立即打印当前订单集合中的所有项目,然后打印"已关闭".当集合发生变化时,"Stream"是否应该保持打开状态以打印新数据?
我对此不了解什么MongooseJS QueryStream?
PS.我的目标是最终emit通过socket.io这里演示的更新集合:Mongoose stream第一次返回少量结果
我发现为了使这个方法起作用,我需要将我的集合更改为capped collection:
var OrderSchema = new Mongoose.Schema({...
}, { capped: { size: 10, max: 10, autoIndexId: true }});
var Orders = db.model('orders', OrderSchema);
var stream = Orders.find().tailable().stream();
stream.on('data', function(doc){
console.log('New item!');
console.log(doc);
}).on('error', function (error){
console.log(error);
}).on('close', function () {
console.log('closed');
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我现在可以MongoDB collection像处理消息队列一样,不断更新.
奇怪的是,当我把它包装在一个SocketIO事件中时,我会得到相同的倍数,documents这让我觉得还有一些我做得不对的......
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |