根据流星中的url参数订阅集合

时间:2014-05-13 09:18:03

标签: meteor

我正在尝试根据url中的参数实现动态订阅收集数据。

在客户端,我在main.js文件中有以下订阅代码。

cSubscribe  =  Meteor.subscribe('cPublish', Session.get('param1'));

在服务器上,我在main.js文件中有以下发布代码。

Test = new Meteor.Collection('test');

Meteor.publish('cPublish', function(param1) {

    return Test.findOne({_id: param1});        

});

在路由器中,我在会话中设置了url参数值Session.set('param1', value);,当我尝试cSubscribe.ready()时,它返回false。在订阅准备好之前,我正在显示加载模板。

路线片段

'/test-url/:value': function(value) {

    Session.set('param1', value);

    if (cSubscribe.ready()) {
        //some code
    } else {
        return 'loading';
    }

}

这个过程有什么问题?有没有更好的方法来实现动态订阅?

1 个答案:

答案 0 :(得分:1)

首先,我希望您使用iron-router( - :

在路由器中,例如,在onBeforeAction()中,您必须设置Session.set('param1', value);

然后在客户端尝试使用这样的smth:

Meteor.startup(function() {
  Deps.autorun(function() {
    var param = Session.get("param1");
    if(param) {
      cSubscribe  =  Meteor.subscribe('cPublish', param);
  });
});

换句话说,在更改网址后,您必须重新订阅