没有添加流星角色......我错过了什么?

时间:2015-08-24 17:03:25

标签: meteor

我有以下应该创建用户(并且确实),然后向该用户添加角色。用户被创建,但角色没有(没有错误)...任何想法为什么?

Meteor.startup(function () {
  var users = [
    {
      fname:"Normal", lname: "User" , email:"normal@epdemo.com",
          roles:['normal'], group: 'demo2016'
    },
  ];

  _.each(users, function (user) {
    if (!Meteor.users.findOne({emails: {$elemMatch: {address: user.email}}})) {
      var id;
      id = Accounts.createUser({
        email: user.email,
        password: "epdemo1",
        profile: { firstName: user.fname, lastName: user.lname }
      });
      if (user.roles.length > 0) {
        // Need _id of existing user record so this call must come
        // after `Accounts.createUser` or `Accounts.onCreate`
        Roles.addUsersToRoles(id, user.roles, user.group);
        console.log("ID :", id));
        console.log("Roles :", Roles.getRolesForUser(id));
      }
    };
  });
});

TIA!

2 个答案:

答案 0 :(得分:1)

看来,在致电getRolesForUser时,您必须传入您的群组名称,否则您将获得空的回拨:

Roles.getRolesForUser(id, 'demo2016')

这是一个未解决的问题: https://github.com/alanning/meteor-roles/issues/68

答案 1 :(得分:0)

好吧我弄清楚了......这是因为Roles数组和Group没有在Users模式中定义。我加了他们,现在一切都很好。我也会接受马克的答案,因为没有它,即使在我这样做之后,我也会遇到https://github.com/alanning/meteor-roles/issues/68并且花费更多时间在这上面。

我猜SimpleSchema只是忽略了Schema中不存在的字段。