嗨,我刚开始学习 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?