我正在尝试添加角色包,然后设置自定义用户角色,如访客或成员,以便我可以将其与付费计划一起使用。我收到以下错误
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);
}
}
});
答案 0 :(得分:1)
simple-schema抛出此错误,这意味着使用没有运算符的修饰符($ set,$ unset,.. etc)使用更新方法。最新版本的roles软件包似乎在与Roles.addUsersToRoles相关的代码中避免了这种情况,但如果在您使用addUsersToRoles方法的行注释时错误消失,那么可能需要
确保您使用的是最新版本的角色包或使用:
meteor update alanning:roles
检查调用此方法的代码,并确保参数正确且顺序正确
确保您没有与非分组模型混合(使用角色包时,您应该选择是始终使用组还是从不使用它们)..例如:
Roles.addUsersToRoles(userId, roles, Roles.GLOBAL_GROUP)
答案 1 :(得分:1)
这通常意味着您尝试$set
尚未添加到架构中的字段。
如果您正在使用望远镜,请务必致电Users.addField()
以获取Roles包所需的任何字段。