我是meteor的新手,我发现删除自动发布会更好。 所以我尝试发布和订阅一个集合来获得两个不同的值。 在我的流星方面,我有:
Meteor.publish('channelUser',
function(){
var user = Meteor.users.findOne({
'_id':this.userId
});
console.log(user);
var test = Channels.find({
'_id': {$in : user.profile.channelIds}
});
return test;
}
);
Meteor.publish('channelToJoin',
function(){
var user = Meteor.users.findOne({
'_id':this.userId
});
console.log(user);
var test = Channels.find({'_id': {$nin: user.profile.channelIds}});
console.log(test);
return test;
});
在我的客户端,我有第一个组件:
this.channelSub = MeteorObservable.subscribe('channelUser').subscribe();
this.channels = Channels.find({});
关于第二个组成部分:
Meteor.subscribe("channelToJoin");
this.channels = Channels.find({}).zone();
但在我的客户端上,我有两个组件,我有相同的数据。 订阅中是否存在某种冲突?
我希望我能清楚地描述我的问题!
答案 0 :(得分:1)
Pub / Sub只填充您的客户收藏集Channels
。
您可以将其视为填充本地存储桶的流程。您可能有多个订阅填充Channels
集合的不同文档,但最终都在客户端的单个集合中。
然后,您必须在客户端调整查询以获取所需的文档(例如,客户端上的Channels.find({'_id': {$nin: user.profile.channelIds}});
)。当然,您可能在不同的模板中有不同的查询,也不同于服务器出版物。
另见How do I control two subscriptions to display within a single template?
答案 1 :(得分:0)
您无法通过订阅在集合之间移动文档。如果您订阅了一个在Pages集合中的文档,定义为新的Meteor.Collection("页面"),那么无论您的酒吧频道如何,在客户端上该文档将是在定义为新
的集合中找到> Meteor.Collection("pages")
。因此,删除MyPages的所有痕迹并在客户端上使用Pages。