Error: can't resolve reference error.json from id #
Error: can't resolve reference error.json from 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: can't resolve reference error.json from id #
Mine validation method:
var valid = ajv.validate(require("../schema/login/incorrect-email.json"), data);
我需要参考本地架构 error.json,而不是远程服务器等。
请告诉我,我可以在这个模式中添加 id 和 $ref 以使用 ajv
进行正确解析
无需更改架构文件,您可以执行以下操作:
ajv.addSchema(require('./incorrect-email.json', 'incorrect-email.json'));
ajv.addSchema(require('./error.json'), 'error.json');
var valid = ajv.validate('incorrect-email.json', data);
您可以在架构本身中指定 ID 属性,而不是在 addSchema 调用中指定架构 ID(推荐)。在任何情况下,Ajv 默认情况下不会使用任何 IO 来加载模式,必须使用 addSchema 方法预加载模式。当您使用 compileAsync 方法时,您可以动态(和异步)加载模式,但您必须自己指定您的加载机制(可以是任何东西 - fs、http 等)。
我不明白如何正确引用其他架构。 我使用了 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: can't resolve reference error.json from id # Mine validation method:
var valid = ajv.validate(require("../schema/login/incorrect-email.json"), data);
我需要参考本地架构 error.json,而不是远程服务器等。 请告诉我,我可以在这个模式中添加 id 和 $ref 以使用 ajv
进行正确解析无需更改架构文件,您可以执行以下操作:
ajv.addSchema(require('./incorrect-email.json', 'incorrect-email.json'));
ajv.addSchema(require('./error.json'), 'error.json');
var valid = ajv.validate('incorrect-email.json', data);
您可以在架构本身中指定 ID 属性,而不是在 addSchema 调用中指定架构 ID(推荐)。在任何情况下,Ajv 默认情况下不会使用任何 IO 来加载模式,必须使用 addSchema 方法预加载模式。当您使用 compileAsync 方法时,您可以动态(和异步)加载模式,但您必须自己指定您的加载机制(可以是任何东西 - fs、http 等)。