我在创建时向用户的帐户添加字段。这很好用:
Accounts.onCreateUser((options, user) => {
user.groups = [2];
return user;
});
我需要创建一个允许用户更改此功能的功能。当我从前端运行时,我收到错误“更新失败:访问被拒绝”
Meteor.users.update(
{ _id: Meteor.userId() },
{
$set: { groups: [4, 5] },
},
);
在server / main.js中我有:
Meteor.publish('currentUser', function() {
return Meteor.users.find({ _id: this.userId }, { fields: { groups: 1 } });
});
答案 0 :(得分:0)
不要直接从客户端进行数据库更新。任何客户都不可信任。
话虽如此,有两种方法可以解决这个问题:
默认情况下,当前用户的用户名,电子邮件和个人资料是 发布给客户。您可以发布其他字段 当前用户:
/**
* Don't use `return true` in production!
* You probably need something like this:
* return Meteor.users.findOne(userId).profile.isAdmin;
*/
Meteor.users.allow({ update:function(userId,user){ 返回true;
// Client
Meteor.subscribe('userData');
} });
Meteor.method({
updateGroups: function(data){
// make changes to the user record
});
在服务器中定义一个流星方法,让服务器在进行一些验证后为您更新相关数据。服务器代码始终是可信任的。
<强> server.js 强>
# Also using comprehension notation
coef = [
getattr(olsfit.params, 'X_' + str(i))
for i in range(4)
]