2017-07-26 101 views
1

我想弄清楚如何我可以全局说所有数组必须是长度为1而不必使用minItems:1我在模式中的每个地方指定一个数组。我在创建一个自定义类型,这是一个选项,但我觉得应该有一个更好的方法?使用AJV设置默认规则

另一个全局限制是不允许任何空字符串。

感谢您的帮助!

回答

1

永远不能改变关键字(全局或其他)的行为。你最好的办法是创建一个包含你的特殊规则的文件。

global.js

{ 
    "definitions": { 
    "non-empty-array": { 
     "type": "array", 
     "minItems": 1 
    } 
    } 
} 

然后,你可以参考这个文件要使用这些特殊规则的任何时间。

example.js

{ 
    "type": "object", 
    "properties": { 
    "a": { 
     "allOf": [{ "$ref": "/global.js#/definitions/non-empty-array" }], 
     "items": { "type": "string" } 
    }, 
    "b": { 
     "allOf": [{ "$ref": "global.js#/definitions/non-empty-array" }], 
     "items": { "type": "integer" } 
    } 
    } 
}