我尝试向所有新创建的用户添加属性“权限”。但它不知何故不起作用。我使用此代码添加属性
Accounts.onCreateUser(function(options, user) {
user.permission = 'default';
if (options.profile)
user.profile = options.profile;
return user;
});
但是当我在客户端检索用户对象时,我看不到属性
u = Meteor.users.findOne(Meteor.userId)
u.permission
>undefined
我做错了什么?
答案 0 :(得分:9)
您正确创建它。问题是客户端没有看到这个值。取自documentation:
默认情况下,服务器会发布用户名,电子邮件和个人资料
因此您需要发布/订阅其他字段。
服务器:
Meteor.publish('userData', function() {
if(!this.userId) return null;
return Meteor.users.find(this.userId, {fields: {
permission: 1,
}});
});
客户端:
Deps.autorun(function(){
Meteor.subscribe('userData');
});
答案 1 :(得分:1)
Meteor.users.findOne(Meteor.userId)
应更改为Meteor.users.findOne(Meteor.userId())
。
另外,我不确定实际传输到客户端的用户对象上的哪些字段。您可能需要将user.permission = 'default'
更改为options.profile.permission = 'default'
,以便Accounts.onCreateUser
看起来像这样:
Accounts.onCreateUser(function(options, user) {
if(!options.profile){
options.profile = {}
}
options.profile.permission = 'default'
if (options.profile)
user.profile = options.profile;
return user;
});