AJV设置additionalProperties: false时如何指定允许的例外属性?
如何在AJV中为MongoDB Schema指定允许的额外属性例外
如果你需要在additionalProperties: false的前提下允许部分额外属性,有两种常用的实现方式:
方法一:直接添加允许的属性到properties中
如果是固定的几个已知额外属性,直接把它们加入properties配置即可,不需要修改additionalProperties: false的设置——因为properties里声明的属性默认都是被允许的,且可以根据需求决定是否加入required数组(非必填就不用加)。
示例代码:
{ type: "object", properties: { goal: { type: "string" }, cost: { type: "number" }, // 这里添加允许的例外属性 description: { type: "string" }, priority: { type: "integer" } }, required: ["goal", "cost"], additionalProperties: false, }
方法二:用patternProperties匹配规则化的属性名
如果允许的额外属性是符合特定命名规则的(比如以meta_开头、以_info结尾),可以用patternProperties配合正则表达式来匹配这类属性,同时保持additionalProperties: false来禁止其他无关属性。
示例代码(允许以meta_开头的任意属性):
{ type: "object", properties: { goal: { type: "string" }, cost: { type: "number" } }, required: ["goal", "cost"], // 匹配以meta_开头的属性,同时指定属性值的类型 patternProperties: { "^meta_": { type: ["string", "number", "boolean"] } }, // 除了patternProperties匹配到的属性,其他额外属性一律禁止 additionalProperties: false, }
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

