流星发布:管理员可以查看所有数据,用户只是他的数据

问题描述:

我有一个集合(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显示仪表板仅在订阅准备,否则将首先显示无人居住。

+0

谢谢@saimeunt,但现在安装了autopublish,现在可以返回所有票证,而无需使用单独的管理票证和用户票证。如果我删除autopublish全部消失... :-( – Arcy 2014-09-29 14:21:40

+0

尝试通过console.log'ing在发布函数中调试游标的结果集:console.log(tickets.find(...)。fetch() );' – saimeunt 2014-09-29 14:38:59

+0

什么都没有出现......我看看这里:http://www.meteorpedia.com/read/Understanding_Meteor_Publish_and_Subscribe,如果数据在发布方法内返回,似乎没有必要返回数据。 – Arcy 2014-09-29 14:52:07