ajv-validator / ajv-validator/ajv

Improvement: Display detailed messages when validation fails

未关闭
#2,526 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
TypeScript
星标
14.8k
派生
1k
PR 合并指标
30 天内没有已合并 PR

描述

### Discussed in https://github.com/ajv-validator/ajv/discussions/2497

Originally posted by **AM1988** October 4, 2024
Hi there.

I have a class for data validation
`export class SchemaValidator {
static ajv = new Ajv({ allErrors: true, verbose: true });

public static validate(schema: SchemaFile, data: T): boolean {
const schemaContent = JSON.parse(fs.readFileSync(path.join(__dirname, 'path', schema), 'utf-8'));
if (!this.ajv.validateSchema(schemaContent)) {
console.error(`Schema is not valid.`);
}
const isValid = this.ajv.validate(schemaContent, data);

if (!isValid) {
const errorMessages = this.ajv.errorsText();
logger.error(`Validation failed : ${errorMessages}`);
return false;
}
return true;
}
}`
I use JSON schema described in a separate file.
How to get the full output when validation fails so that I can understand which part exactly does not match?

For example, values in the enum did not match, or input data had some additional properties, missing properties, etc.

Right now I see only `data.payload.something should be equal to one of the allowed values`

It does not have info about original data that does not pass schema validation.

It returns messages like
`data.sources[0].version should match pattern "^.{555}$", data.sources[1].version should match pattern "^.{555}$", data.sources[2].version should match pattern "^.{555}$"` but you have no clue what exactly `data.sources[0].version` is.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。