我用 JavaScript 编写了一个模式,因为它更容易,我可以简单地运行它来将其转换为JSON。
这部分很好,但现在我想提取一个子模式/定义,因为我想使用它的应用程序不会让我为我感兴趣的子模式指定 JSON 路径。
所以我试着写一个小脚本把它拉出来:
#!/usr/bin/env node
import Ajv from 'ajv';
import Path from 'path';
const ajv = new Ajv({
$data: true,
});
ajv.addSchema(require(Path.resolve(process.argv[2])).default,'x');
const schema = ajv.getSchema(`x#/${process.argv[3]}`).schema;
console.log(JSON.stringify(schema,null,4));
但我得到的是:
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/defs/Identifier"
},
"versions": {
"type": "array",
"items": {
"$ref": "#/defs/TableVersion"
}
}
},
"required": [
"name",
"versions"
]
}
即,我丢失了其他定义!
AJV 中是否有一些 API 方法可以在不破坏所有 $refs 的情况下提取子模式?