错误:无法从id#解析引用error.json

时间:2016-11-08 19:34:16

标签: json jsonschema ajv

我不明白如何正确引用其他架构。 我使用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
  }
}

运行测试后我收到此错误

  

错误:无法从id#解析引用error.json   矿山验证方法:

var valid = ajv.validate(require("../schema/login/incorrect-email.json"), data);

我需要引用本地模式error.json,而不是远程服务器等。 请告诉我,我可以在这个架构中添加id,使用ajv

在$ ref中正确解析

1 个答案:

答案 0 :(得分:1)

无需更改架构文件即可:

{{1}}

您可以在模式本身中指定ID属性,而不是在addSchema调用中指定模式ID(建议使用)。在任何情况下,默认情况下,Ajv不会使用任何IO来加载模式,模式必须使用addSchema方法预加载。您可以在使用compileAsync方法时动态(和异步)加载模式,但您必须自己指定加载机制(可以是任何内容 - fs,http等)。