流星发布:管理员可以查看所有数据,用户只是他的数据
问题描述:
我有一个集合(Collection2包):流星发布:管理员可以查看所有数据,用户只是他的数据
tickets = new Mongo.Collection("tickets");
我想表明,通过模板,用户所有的门票,如果管理员在登录,否则只有当前的用户票证。
我的服务器代码(流星规则包):
Meteor.publish('tickets', function(){
if (Roles.userIsInRole(this.userId, ['admin'])){
return tickets.find({},{sort:{deadline: 1}});
}else{
return tickets.find({_id: this.userId}, {sort:{deadline: 1}});
}
});
我的客户端代码:
Template.dashboard.helpers({
tickets: function() {
Meteor.subscribe('tickets');
});
什么都没有发生模板......我做了什么错?
答
您的模板助手必须返回实际数据,但在您的代码中,您不会返回任何内容,只需订阅您的门票。
Template.dashboard.helpers({
tickets: function() {
// return a cursor fetching all tickets that were pushed to the client
// thanks to the subscription
return tickets.find();
}
});
根据您的需求,您可能需要使用iron:router
显示仪表板仅在订阅准备,否则将首先显示无人居住。
谢谢@saimeunt,但现在安装了autopublish,现在可以返回所有票证,而无需使用单独的管理票证和用户票证。如果我删除autopublish全部消失... :-( – Arcy 2014-09-29 14:21:40
尝试通过console.log'ing在发布函数中调试游标的结果集:console.log(tickets.find(...)。fetch() );' – saimeunt 2014-09-29 14:38:59
什么都没有出现......我看看这里:http://www.meteorpedia.com/read/Understanding_Meteor_Publish_and_Subscribe,如果数据在发布方法内返回,似乎没有必要返回数据。 – Arcy 2014-09-29 14:52:07