我试图添加角色包,然后设置自定义用户角色,如客人或成员,所以我可以使用它与付费计划。我得到以下错误
Exception in defer callback: Error: When the modifier option is true, validation object must have at least one operator
at checkModifier (packages/aldeed:simple-schema/simple-schema-validation.js:271:1)
at doValidation1 (packages/aldeed:simple-schema/simple-schema-validation.js:321:1)
当我运行以下函数
时Meteor.methods({
setUserRole: function(userId, roleToSet){
// check(Meteor.userId(), String);
check(userId, String );
check(roleToSet, String);
var user = Meteor.users.findOne(userId);
if (_.isEmpty(user.roles)) {
Roles.addUsersToRoles(userId, roleToSet);
}
}
});
这通常意味着您正在尝试$set
尚未添加到模式中的字段。
如果您正在使用Telescope,请确保为Roles包所需的任何字段调用Users.addField()
。
当您将模式应用于Users集合时,就会发生这种情况。
有两种类型的角色可以应用: 或 你不能同时使用两者。在您的案例中,由于您没有在 请注意,如果不更改方案,您将无法使用组 roles: {
type: Object,
optional: true,
blackbox: true
},
roles: {
type: [String],
optional: true
}
Roles.addUsersToRoles(userId, roleToSet);
中使用组,因此您需要第二个角色模式定义示例。
这个错误是由simple-schema抛出的,它意味着使用一个没有操作符的修饰符($set, $unset, ..)来使用更新方法。等等)。最新版本的角色包似乎在与角色相关的代码中避免了这个问题。addUsersToRoles,但是如果在注释使用addUsersToRoles方法的行时错误消失,那么可能需要
-
确保您使用的是最新版本的角色包或使用:
meteor update alanning:roles
-
检查调用此方法的代码并确保参数正确且顺序正确
-
确保你没有混合分组模型和非分组模型(当使用角色包时,你应该选择是否总是使用组或从不使用它们)。例如:
Roles.addUsersToRoles(userId, roles, Roles.GLOBAL_GROUP)