meteor订阅管理器更改集合名称

时间:2014-07-04 15:38:20

标签: meteor

我使用订阅管理器和铁路由器,我的问题就是这个。

我有一个集合"参与者"有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。

有没有办法更改订阅的名称,以便让每个订阅都在正确的缓存中?

感谢。

2 个答案:

答案 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

我现在正在做的是使用非常有限数量的订阅(主要在用户上过滤)然后我创建尽可能多的数据对象,因为我想以不同的方式过滤我的订阅。