为了解决这个问题,我们可以使用additionalProperties属性将它设置为false,这样未定义的字段就会被视为非法,并且会在验证时返回错误。
示例代码:
const Ajv = require('ajv');
const ajv = new Ajv({
allErrors: true,
additionalProperties: false // 将additionalProperties属性设置为false
});
const schema = {
type: 'object',
required: ['name', 'age'],
properties: {
name: { type: 'string' },
age: { type: 'number' }
}
};
const validate = ajv.compile(schema);
const data = {
name: 'John Smith',
age: 30,
address: '123 Main St.' // 没有定义在schema中的address字段
};
const valid = validate(data);
if (!valid) {
console.log(validate.errors);
}
在这个示例中,validate函数将返回false,并且错误信息将包含address这个未定义的字段。因此,在编写schema时,要仔细考虑所有可能的字段,或者使用additionalProperties属性来限制未定义的字段。
上一篇:AJV:由于用户定义的关键字函数中的“this”未定义,无法使用{passContext:true}获取任何上下文。
下一篇:AJV:找不到键或引用为“https://json-schema.org/draft-07/schema”的模式