当我尝试从集合中获取对象时,我遇到了问题,订阅功能未按预期工作。例如:
客户端:
JS
Template.Main.onCreated(function(){
var num = Router.current().params.taskid;
console.log(num);
this.subscribe('getTransaction',num);
});
服务器:
Meteor.publish('getTransaction', function(taskid){
return Transactions.find({taskid:taskid});
});
如果我保持原样,我无法显示任何内容,控制台中显示的值为9.但是,如果我更改变量" num"对于显式值:9它按预期工作。
你知道为什么订阅不适用于这种情况吗?
我真的很感谢你的帮助。
答案 0 :(得分:0)
我认为您的问题可能是路由器尚未准备好"在创建模板的那一刻。您是否已将订阅放在路线特定选项中(我认为您使用的是铁路由器?):
Router.route('/getTransaction/:_id', {
......
subscriptions: function() {
// add the subscription to the waitlist
this.subscribe('getTransaction', this.params._id).wait();
},
.................................
});
您可以在此处找到更多选项: http://iron-meteor.github.io/iron-router/#wait-and-ready
如果不起作用,请尝试延迟"通过使用setTimeout()函数进行一点订阅。像这样:
Meteor.setTimeout(function(){
this.subscribe('getTransaction',num);
}, 100);