我正在尝试在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);
}
}]
};
}
});
问题是角色和电子邮件仅针对当前用户显示。我不知道为什么......
答案 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();
}
})