ajv-validator / ajv-validator/ajv-errors

Getting instancePath when using with ajv-keywords and uniqueItemProperties

Aberta
#145 1 comentário 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
TypeScript
Estrelas
289
Forks
21
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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?"
}
]
```

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.