我的mongodb上有一组消息。
我创建了两个发布函数:
Meteor.publish("messages", function (self, buddy) {
check(self, String);
check(buddy, String);
return Messages.find({participants: {$all : [self, buddy] }});
});
和,
Meteor.publish("conversations", function(self){
check(self, String);
return Messages.find(
{ participants: { $in : [self] } },
{ participants: { $elemMatch: { $ne: self } }, messages: { $slice: -1 }}
);
});
我在客户端订阅了这两个:
Meteor.subscribe("conversations", user);
return Messages.find();
和,
Meteor.subscribe("messages", user, buddy);
return Messages.find();
订阅位于不同的模板中。
问题是,当我从conversation
订阅返回数据时,数据与messages
订阅的数据相同。我在两个订阅中都看到相同的结果,即使它们有不同的查询...
我该如何解决这个问题?
答案 0 :(得分:1)
这是正常行为,同一个集合包含两个订阅的数据。您还需要在客户端上进行过滤。
此https://www.discovermeteor.com/blog/query-constructors/概述了处理此问题的模式。
基本思想是将查询部分作为服务器和客户端的公共代码,使其自我一致。