ajv-validator / ajv-validator/ajv-errors

Getting instancePath when using with ajv-keywords and uniqueItemProperties

Ouverte
#145 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
289
Forks
21
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

When using alongside `ajv-keywords` and `uniqueItemProperties`, how do I get the `instancePath` of the erroneous record?

My code:

```js
import Ajv from 'ajv';
import addFormats from 'ajv-formats';
import ajvErrors from 'ajv-errors';
import ajvKeywords from 'ajv-keywords';

const ajv = new Ajv({ allErrors: true });
ajvKeywords(ajv, ['uniqueItemProperties']);
addFormats(ajv, { formats: ['date', 'email'], keywords: true });
ajvErrors(ajv);
```
… and my schema:
```js
export const employeeSchema = {
errorMessage: {
uniqueItemProperties: 'What’s going on?',
},
items: {
properties: {
firstName: {
errorMessage: { type: 'required; and must be a string' },
type: 'string',
},
lastName: {
errorMessage: { type: 'required; and must be a string' },
type: 'string',
},
email: {
format: 'email',
type: 'string',
},
},
required: [
'email',
'firstName',
'lastName',
],
type: 'object',
},
type: 'array',
uniqueItemProperties: ['email'],
};
```
And when running against the following data:
```js
[
{
email: 'dhachardy@tamu.edu',
firstName: 2,
lastName: 'Hachard',
},
{
email: 'dhachardy@tamu.edu',
firstName: 'Me',
lastName: 'Hachard',
},
]
```
… I get the following errors reported:
```json
[
{
"instancePath": "",
"schemaPath": "#/errorMessage",
"keyword": "errorMessage",
"params": {
"errors": [
{
"instancePath": "",
"schemaPath": "#/uniqueItemProperties",
"keyword": "uniqueItemProperties",
"params": {},
"message": "must pass \"uniqueItemProperties\" keyword validation",
"emUsed": true
}
]
},
"message": "What’s going on?"
}
]
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.