ajv-validator / ajv-validator/ajv-errors
Errors for custom keywords / Sequence of initialization
- Ngôn ngữ chính
- TypeScript
- Star
- 289
- Fork
- 21
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Hello,
First of all, thank you for this library, and also for the main `ajv` library! :) I would just like to post this in order to save other people a few hours.
I discovered yesterday that it is important to add your keywords to your ajv instance *before* adding this `ajv-errors` plugin. Otherwise, customized error messages for your custom keywords will not appear, as your validators have not run by the time this plugin goes looking for custom error messages.
Example - if you init this plugin before adding your keywords:
```javascript
const ajv = require('ajv')
const instance = new ajv({
allErrors: true,
jsonPointers: true
})
require('ajv-errors')(instance)
instance.addKeyword('testError', {
validate: () => false
})
const validator = instance.compile({
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://workflow.rlscplatform.net/PPB_ASSAY",
"type": "object",
"properties": {
"test": {
"type": "string",
"testError": true,
"errorMessage": {
"testError": "This is my custom error message"
}
}
}
})
validator({
test: "test"
})
console.log(validator.errors)
```
Outputs this:
```
[ { keyword: 'testError',
dataPath: '/test',
schemaPath: '#/properties/test/testError',
params: { keyword: 'testError' },
message: 'should pass "testError" keyword validation' } ]
```
But if you just put ajv-errors *after* your addKeyword:
```
instance.addKeyword('testError', {
validate: () => false
})
require('ajv-errors')(instance)
```
The output becomes:
```
[ { keyword: 'errorMessage',
dataPath: '/test',
schemaPath: '#/properties/test/errorMessage',
params: { errors: [Array] },
message: 'This is my custom error message' } ]
```
Regards,
TJ
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.