【发布时间】:2020-11-24 10:48:40
【问题描述】:
我想要一个可以包含 3 个字段的 JSON 模式:num、key1 和 key2。 num 和 key1 都是必填字段。仅当为key1 提供了'abc' 值时,字段key2 才是强制性的。这是我创建的架构:
schema = {
type: 'object',
additionalProperties: false,
properties: {
num: {
type: 'number',
minimum: 1,
maximum: 5
},
key1: {
type: 'string',
enum: ['abc', 'def']
}
},
required: ['num', 'key1'],
if: {
properties: {
key1: {
const: 'abc'
}
}
},
then: {
properties: {
key2: {
type: 'string',
required: true
}
}
}
};
这是我想使用 npm 模块 jsonscehma ("jsonschema": "^1.2.0") 对 schema 进行验证的 instance:
instance = {
num: 1,
key1: 'abc'
};
var Validator = require('jsonschema').Validator;
var v = new Validator();
console.log(v.validate(instance, schema));
我的期望是,由于key1 的值是'abc',理想情况下这应该抛出一个错误提示
缺少必填字段“key2”
但是,这种情况下没有这样的错误。
另外,如果我在实例中提供key2,我会得到
additionalProperty "key2" 在不允许的情况下存在于实例中
尽管key1 是'abc'。
如果我在这里遗漏了什么,请说明。
【问题讨论】:
标签: javascript node.js jsonschema