Meteor发布:admin可以查看所有数据,用户只能查看他的数据

时间:2014-09-29 12:00:51

标签: javascript meteor

我有一个集合(Collection2包):

tickets = new Mongo.Collection("tickets");

如果管理员已登录,我想通过模板显示所有用户票证,否则只显示当前用户票证。

我的服务器代码(meteor-rules包):

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');
  });

模板上什么都没发生......我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的模板助手必须返回实际数据,但在您的代码中,您不会返回任何内容,只需订阅您的门票。

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来显示您的信息中心,否则它将首先显示为未填充。