ajv:未定义字段时验证失败

问题描述 投票:0回答:1

如果我分析具有显式未定义字段(甚至是不需要的字段)的对象,我希望 JSON 模式验证失败。

使用 z-schema 包可以按预期工作,但使用 ajv 则不行。

我可以对 ajv 有同样的行为吗?

这是解释不同输出的代码示例:

// run `node index.js` in the terminal
const Ajv = require('ajv');
const ajvOptions = {};
const ajv = new Ajv(ajvOptions);

const ZSchema = require('z-schema');
const zSchemaOptions = {};
const validator = new ZSchema(zSchemaOptions);

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


const testObject = {
  notUndefinedString: undefined,
};

const ajvValid = ajv.validate(schema, testObject);
console.log('ajv -> is valid: ', ajvValid); // true, but should be false!

const zSchemaValid = validator.validate(testObject, schema);
console.log('ZSchema -> is valid: ', zSchemaValid); // false

此处运行的工作代码:https://stackblitz.com/edit/node-ajv-vs-zschema-example?file=index.js

undefined jsonschema json-schema-validator ajv
1个回答
1
投票

目前看来不可能。

GitHub

上标记为限制
© www.soinside.com 2019 - 2024. All rights reserved.