延迟回调中的异常:错误:当修饰符选项为true时,验证对象必须至少有一个运算符

时间:2015-07-27 09:32:55

标签: meteor telescope

我正在尝试添加角色包,然后设置自定义用户角色,如访客或成员,以便我可以将其与付费计划一起使用。我收到以下错误

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);
        }
    }
});

2 个答案:

答案 0 :(得分:1)

simple-schema抛出此错误,这意味着使用没有运算符的修饰符($ set,$ unset,.. etc)使用更新方法。最新版本的roles软件包似乎在与Roles.addUsersToRoles相关的代码中避免了这种情况,但如果在您使用addUsersToRoles方法的行注释时错误消失,那么可能需要

  1. 确保您使用的是最新版本的角色包或使用:

    meteor update alanning:roles 
    
  2. 检查调用此方法的代码,并确保参数正确且顺序正确

  3. 确保您没有与非分组模型混合(使用角色包时,您应该选择是始终使用组还是从不使用它们)..例如:

     Roles.addUsersToRoles(userId, roles, Roles.GLOBAL_GROUP)
    

答案 1 :(得分:1)

这通常意味着您尝试$set尚未添加到架构中的字段。

如果您正在使用望远镜,请务必致电Users.addField()以获取Roles包所需的任何字段。