我正在制作一个管理页面,其中显示了用户orders
的列表。出于某种原因,发布功能没有从我的订阅功能接收用户的ID作为参数。
我的user
对象包含以下属性:
_id
userId
confirmed
我的orders
对象包含以下属性:
_id
userId
amount
date
我的出版物:
Meteor.publish('clientOrders', function(userId) {
console.log('user is ' + userId);
return Order.find({_id: userId});
});
我的订阅:
viewClientOrders = RouteController.extend({
loadingTemplate: 'loading',
waitOn: function () {
Meteor.subscribe('clientOrders', this.params._id);
},
action: function() {
this.render('viewClientOrders');
}
});
我的路线:
Router.route('/viewClientOrders/:id', {name: 'viewClientOrders', controller: 'viewClientOrders', onBeforeAction: requireLogin});
我为userId做了一个console.log,它返回null,虽然我在我的订阅功能中明确地传递了一个userId参数(this.params._id
)。但是,如果我传递参数3,出于测试目的,它将起作用。此外,我使用类似的发布/订阅方法来查看客户端的配置文件,传递完全相同的参数,它工作正常......
任何人都知道发生了什么?谢谢!
答案 0 :(得分:0)
确保return
中的waitOn
。 Iron Router只有在知道订阅准备就绪后才会进行渲染:
viewClientOrders = RouteController.extend({
waitOn: function () {
return Meteor.subscribe('clientOrders', this.params._id);
}
...
确保您还设置了loadingTemplate
(docs)。