【发布时间】:2019-12-29 10:32:31
【问题描述】:
我正在做一个聊天系统,我尝试使用mongoDB/mongoose的changeStream。
如果当前用户是收件人,我只想获取文档,但它不起作用。到目前为止,我遇到了两个案例。一个从不触发,另一个与所有文档一起返回,即使当前用户不是收件人。
区别在于数组中的管道与否。
你知道什么是正确的语法吗?
我阅读了过去 2 天在谷歌前 10 页找到的所有文章,但没有一篇包含如何过滤。据我了解,聚合管道仅用于操作结果,但无法排除未通过条件的文档。
这是我所做的:
const pipeline = [{
$match: {
"userId": this.recipient.id,
"recipientId": this.user.id
}
}]
const stream = MessageModel.watch(pipeline )
stream.on('change', (data: any) => {
console.log(`messages changed`);
this.socketIo.sockets.in(this.socket.id).emit(`protected/message/subscribe/${this.msg.msgId}`, data.fullDocument);
});
【问题讨论】:
-
我觉得这篇文章对你很有帮助thecodebarbarian.com/…
-
我阅读了过去 2 天在谷歌前 10 页找到的所有文章(包括这篇文章),但没有一篇包含如何过滤。据我了解,聚合管道仅用于操作结果,但无法排除未通过条件的文档。
-
如果你找到了,请在这里分享答案,我想这对我来说将在未来几天内成为现实