在AJV中,可以使用$ref关键字实现从schema到其他schema的引用。但是,有时需要引用一个相对路径,而不是一个绝对路径。以下是如何在AJV中验证相对引用的示例代码:
使用相对路径引用外部schema,如下:
// main-schema.json { "type": "object", "properties": { "name": { "$ref": "./name-schema.json" } }, "required": ["name"] }
// name-schema.json { "type": "string" }
这将从当前目录中查找“name-schema.json”文件并将其作为引用的schema。
使用以下代码在Node.js中进行AJV验证:
const Ajv = require('ajv'); const ajv = new Ajv({});
const fs = require('fs');
const mainSchema = JSON.parse(fs.readFileSync('./main-schema.json', 'utf-8')); const nameSchema = JSON.parse(fs.readFileSync('./name-schema.json', 'utf-8'));
ajv.addSchema(nameSchema, 'name-schema.json'); const validate = ajv.compile(mainSchema);
const valid = validate({ "name": "John Doe" });
if (!valid) { console.log(validate.errors); }
这将读取主schema和名称schema文件,并将名称schema添加到AJV中。然后,将主schema传递给compile()函数以生成验证函数。最后,将对象传递给validate()函数进行验证。
请注意,“./”表示当前目录。如果您需要回到上一级目录,可以使用“..”