ajv:在未定义字段的情况下验证失败



如果我分析一个具有显式未定义字段(甚至是不需要的字段(的对象,我希望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

目前似乎不可能。

在GitHub上标记为限制:https://github.com/ajv-validator/ajv/issues/2152

最新更新