我使用订阅管理器和铁路由器,我的问题就是这个。
我有一个集合"参与者"有2个出版物:所有参与者和今天的参与者。
如果我转到此页面:
Router.map(function () {
this.route('winners', {
waitOn: function () {
return [subs.subscribe('allWinners'),
subs.subscribe('allParticipants')];
console.log("subscribed!");
},
data: function () {
return {
winners: Winners.find(),
participants: Participants.find(),
loginBox: "True"
}
}
});
AllParticipants发布已订阅并由订阅管理器包放入缓存中。
如果在此之后,我转到此页面:
Router.map(function () {
this.route('participants', {
path: '/',
waitOn: function () {
return subs.subscribe('todayParticipants');
},
data: function () {
return {
participants: Participants.find()
}
}
});
我希望只订阅今天的参与者,但由于我的订阅会自动命名为"参与者",它使用上一页的缓存订阅为allParticipants。
有没有办法更改订阅的名称,以便让每个订阅都在正确的缓存中?
感谢。
答案 0 :(得分:0)
我在waitOn函数中所做的是首先停止我的订阅,如
if (App.subs) {
for (name in App.subs) {
App.subs[name].stop();
}
}
然后我创建新的订阅
App.subs = {
settings: Meteor.subscribe('settings', project),
...
};
return [App.sub.settings, .....];
希望这有帮助!
答案 1 :(得分:0)
今天,似乎没有解决这个问题的方法。
此处有更多解释:https://github.com/meteorhacks/subs-manager/issues/11
我现在正在做的是使用非常有限数量的订阅(主要在用户上过滤)然后我创建尽可能多的数据对象,因为我想以不同的方式过滤我的订阅。