gpt4 book ai didi

node.js - Mongoose QueryStream 新结果

转载 作者:可可西里 更新时间:2023-11-01 09:56:52 24 4
gpt4 key购买 nike

我正在尝试设置 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');
});

立即打印当前在订单集合 中的所有项目,然后打印“已关闭”。当集合发生变化时,“Stream”不应该保持打开状态打印新数据吗?

我对 MongooseJS QueryStream 有什么不理解的地方?

附言。我的目标是最终通过 socket.io emit 更新集合,如下所示:Mongoose stream return few results first time

最佳答案

我发现为了让这个方法起作用,我需要将我的集合更改为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');
});

之所以可行,是因为我现在可以将 MongoDB 集合 视为消息队列,它会不断更新。

奇怪的是,当我将其包装在 SocketIO 事件中时,我得到了多个相同的 documents,这让我觉得我仍然做错了...

关于node.js - Mongoose QueryStream 新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com