2

嗨,我刚开始学习 AJV,我对它如何处理必填字段有点困惑。我正在处理一个已经构建的项目,可能当前用例不需要某些配置,或者做错了。

我正在使用 AJV 版本 5.5.1。

这是我的代码:

    const opt = {
      $data: true, allErrors: true, verbose: true, unknownFormats: ['int32', 'int64', 'double']
    };
    opt['v5'] = true;
    const validator = withKeywords(new Ajv(opt), ['switch', 'if']);
    withError(this.validator);`enter code here`

    const schema = {
        'required': [
          'name'
        ],
        'type': 'object',
        'properties': {
          'name': {
            'type': 'string'
          }
        }
      }

     const data = {
        name: ''
     }

     const isValid = validator.validate(schema, data);

现在这会将 isValid 变量设置为 true 并且 validator.errors 没有错误,这让我有点困惑。因为我希望发生的事情是错误的,因为在架构级别我在所需的属性中设置了“名称”键。

我还尝试设置 data.name = null 我得到 isValid false 错误,这对我来说很有意义,因为我在架构级别将类型设置为字符串,但这不是需要验证的错误。我希望能够区分所需错误和类型错误。

如果属性没有值,如何使验证器返回 false?

4

0 回答 0