在Meteor.roles中插入错误

在Meteor.roles中插入错误,meteor,meteor-blaze,meteor-accounts,Meteor,Meteor Blaze,Meteor Accounts,我正在使用meteor角色包在我的网页上进行授权。我定义了两个角色,一个是学生角色,另一个是管理员角色。对于在我的网页上注册的所有新用户,我已使用以下帮助程序为他们分配了学生角色: Accounts.createUser({ email:email, password:password, profile:{ //profile includes fullname and surname fullname:fullname,

我正在使用meteor角色包在我的网页上进行授权。我定义了两个角色,一个是
学生
角色,另一个是
管理员
角色。对于在我的网页上注册的所有新用户,我已使用以下帮助程序为他们分配了
学生
角色:

Accounts.createUser({
  email:email,
  password:password,
profile:{                         //profile includes fullname and surname
    fullname:fullname,
    surname:surname
}
},
function(err){
  if(err){
  FlashMessages.sendError("There was an error");
 } else {
  FlashMessages.sendSuccess("Account Created");
  Roles.addUsersToRoles( Meteor.userId(), 'Students' );
  Router.go("/dashboard");
      }
  });
在尝试添加新用户后,该用户确实会被添加到meteor users集合中,并且角色会按预期分配。但控制台会返回以下错误:

insert失败:WriteError({“code”:11000,“index”:0,“errmsg”:“E11000重复键错误索引:meteor.roles.$name\u 1重复键:{:\“Students\”}”,“op”:{“name”:“Students”,“\u id”:“w3vnwkrjtne8tpbs”})


我无法理解这一错误,因为用户分配了角色并将被插入meteor集合。

我认为它运行了两次。第一次插入成功时。第二次,它失败了,因为对象已经存在。您将上述代码放在哪里?@blueren上述代码是注册表的一部分,是相应模板的助手。一旦用户注册,即
FlashMessages.sendsucture(“帐户创建”)
,我调用
角色。addUsersToRoles
为每个新用户分配一个角色。@blueren还通过
角色向角色添加用户。addUsersToRoles
更新
Meteor用户集合
以将角色信息包含到用户集合中。因此,我在服务器端助手中加入了
Meteor.users.allow
规则。