为什么Ajv在编译期间无法解析引用?

时间:2016-10-28 13:42:42

标签: node.js jsonschema ajv

以下是我尝试编译并用于验证的JSON模式的示例。为此,我使用的是'ajv' npm module

以下是我正在运行的代码......

var ajv = require('ajv')();

var contactSchema = {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Contact",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "work": { "$ref": "#definitions/phone" },
        "home": { "$ref": "#definitions/phone" },
    },
    "definitions": {
        "phone": {
            "type": "object",
            "required": ["number"],
            "properties": {
                "number": { "type": "string" },
                "extension": { "type": "string" }
            }
        }
    }
};

var validator = ajv.compile(contactSchema);

当我运行此代码时,我收到以下异常..

Error: can't resolve reference #definitions/phone from id #

还有其他人遇到过这类问题吗?知道我可能做错了吗?

1 个答案:

答案 0 :(得分:3)

您的引用不正确(虽然它有效),它应该是#/ definitions / phone

或者,要使其工作,您可以在手机架构中添加"id": "#definitions/phone",但更常见的是使用"id": "#phone"(并更新$ refs)。