如何设置需要在Ajv/ fasttify的所有属性?



我有一个模式,所有的属性都应该存在,由于大量的属性,它不是一个好方法来手动添加它们在所需的数组,有任何方法可以做到吗?

<<p>模式代码/strong>
const schema = {
type: "object",
properties: {
foo,
bar
},
required : ['stockid', 'quantity'],
additionalProperties: false,
}

我想要所有的属性都是必需的,但是我不想在required数组中手动添加每个属性。

谢谢:)

默认没有此功能。您需要编写一个实用程序函数来完成它。

const schema = {
type: 'object',
properties: {
foo: {},
bar: {}
},
additionalProperties: false
}
const fastifyRouteConfig = {
schema: {
body: requireAll(schema)
}
}
function requireAll (schema) {
return {
...schema,
required: Object.keys(schema.properties)
}
}

注意,在onRoute钩子中组合它可以自动执行此过程,因为您可以在那里操作schema对象。

我有一个类似的需求(尽管与fasttify无关),我最终只是使用了getter来避免手动指定字符串数组。

const schema = {
type: 'object',
get required() {
return Object.keys(this.properties)
},
additionalProperties: false,
properties: {
foo: {},
bar: {}
}
}

相关内容

  • 没有找到相关文章

最新更新