Ошибка: не удается разрешить ссылку error.json из id #
Я не понимаю, как правильно ссылаться на другие схемы. Я использовал AJV, и есть следующие две схемы
Первая схема неверно-email.json:
{
"title": "Не корректный email",
"properties": {
"status": {
"description": "Статус операции",
"type": "integer",
"enum": [68]
},
"error": {
"$ref":"error.json"
}
},
"required":["status", "error"],
"additionalProperties": false
}
Вторая схема error.json:
{
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"properties": {
"description_ru": {
"description": "Информация об ошибке на русском языке",
"type": "string"
},
"description_en": {
"description": "Информация об ошибке на английском языке",
"type": "string"
}
},
"additionalProperties": false
}
}
После запуска теста я получаю эту ошибку
Ошибка: не удается разрешить ссылку error.json из id # Мой метод проверки:
var valid = ajv.validate(require("../schema/login/incorrect-email.json"), data);
Мне нужна ссылка на локальную схему error.json, а не на удаленный сервер и т. Д. Пожалуйста, скажите мне, где я могу добавить идентификатор в этой схеме и $ref для правильного разбора с ajv
1 ответ
Без изменения файлов схемы вы можете сделать:
ajv.addSchema(require('./incorrect-email.json', 'incorrect-email.json'));
ajv.addSchema(require('./error.json'), 'error.json');
var valid = ajv.validate('incorrect-email.json', data);
Вместо указания идентификаторов схемы в вызовах addSchema вы можете указать атрибуты идентификатора в самих схемах (это рекомендуется). В любом случае Ajv по умолчанию не будет использовать какой-либо ввод-вывод для загрузки схем, схемы должны быть предварительно загружены методом addSchema. Вы можете динамически (и асинхронно) загружать схемы, когда используете метод compileAsync, но вы должны сами указать механизм загрузки (может быть что угодно - fs, http и т. Д.).