我正在尝试根据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';
}
}
这个过程有什么问题?有没有更好的方法来实现动态订阅?
答案 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);
});
});
换句话说,在更改网址后,您必须重新订阅。