Reactive-table:无法显示Meteor.users中所有对象的数据

时间:2015-04-24 06:41:35

标签: meteor

我正在尝试在Meteor中使用反应表(reactive-table)来显示用户和进行编辑。我有一个主要问题: - 我用Accounts.createUser()方法创建用户,我有一个额外的字段“profile”(使用meteor-roles包)。我使用以下代码定义表格格式:

Template.adminusers.helpers({
    usersCol: function() {
        return Meteor.users;
    },
    settings: function() {
        return {
            rowsPerPage: 10,
            showFilter: true,
            fields: [{
                key: 'profile.lastname',
                label: 'Last name'
            }, {
                key: 'profile.firstname',
                label: 'First name'
            }, {
                key: 'roles',
                label: 'Role'
            }, {
                key: 'emails.0.address',
                label: 'Email'
            }, {
                key: 'edit',
                label: '',
                sortable: false,
                fn: function() {
                    var html = '<button class="btn btn-info btn-xs" type="button"><i class="fa fa-paste"></i> Edit</button>'
                    return new Spacebars.SafeString(html);
                }
            }]
        };
    }
});

问题是角色和电子邮件仅针对当前用户显示。我不知道为什么......

1 个答案:

答案 0 :(得分:3)

默认情况下,配置文件将其发布到客户端。

现在为了获取所有用户对象,你应该做这样的事情(使用allaning角色)。

例如,您有一个rol为Admin的用户,这就是发布应该看起来和订阅的方式。

if(Meteor.isClient){
 Tracker.autorun(function(){
   Meteor.subscribe('Admin')
 })
}else if(Meteor.isServer){
 Meteor.publish("Admin", function () {
  var user = Meteor.users.findOne({_id:this.userId});

  if (Roles.userIsInRole(user, ["Admin"])) {
    return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
  } 
}

管理员用户将获得所有用户,也可以使用这样的帮助。

Template.example.helpers({
 userList:function(){
   return Meteor.users.find();
 }
})
相关问题