首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >defer回调异常:错误:当修饰符选项为true时,校验对象必须至少有一个运算符

defer回调异常:错误:当修饰符选项为true时,校验对象必须至少有一个运算符
EN

Stack Overflow用户
提问于 2015-07-27 17:32:55
回答 3查看 396关注 0票数 3

我正在尝试添加角色包,然后设置一个自定义用户角色,如guest或member,这样我就可以将其与付费计划一起使用。我得到了以下错误

代码语言:javascript
复制
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)

当我运行以下函数时

代码语言:javascript
复制
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);
        }
    }
});
EN

回答 3

Stack Overflow用户

发布于 2015-07-28 02:25:37

此错误由simple-schema抛出,这意味着使用的update方法使用的修饰符没有操作符($set,$unset,..等)。最新版本的roles包似乎在与Roles.addUsersToRoles相关的代码中避免了这一点,但是如果在注释使用addUsersToRoles方法的行时错误消失了,那么您可能需要

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

meteor update alanning:roles

  • 检查调用此方法的代码,并确保参数正确且顺序正确

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-07-28 09:00:13

这通常意味着您正在尝试$set一个尚未添加到模式中的字段。

如果您使用的是望远镜,请确保为Roles包所需的任何字段调用Users.addField()

票数 1
EN

Stack Overflow用户

发布于 2015-12-21 05:33:28

当您将架构应用于用户集合时,就会发生这种情况。

您可以应用两种类型的roles

代码语言:javascript
复制
  roles: {
      type: Object,
      optional: true,
      blackbox: true
  },

代码语言:javascript
复制
  roles: {
      type: [String],
      optional: true
  }

您不能同时使用这两种方法。在您的示例中,由于您没有在Roles.addUsersToRoles(userId, roleToSet);中使用groups,因此您需要第二个角色模式定义示例。

请注意,如果不更改方案,您将无法使用组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31649573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档