我有以下应该创建用户(并且确实),然后向该用户添加角色。用户被创建,但角色没有(没有错误)...任何想法为什么?
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!
答案 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中不存在的字段。