我目前在我的应用上具有以下架构:
Joi.object().keys({
users: Joi.array().items(mySchema)
})
因此,我可以得到一系列用户并进行验证。 但是现在我需要为每个对象使用不同的架构。
有没有办法做类似的事情:
Joi.object().keys({
users: [
Joi.object().keys(mySchemaForUserOne),
Joi.object().keys(mySchemaForUserTwo),
// ...
]
})
答案 0 :(得分:0)
您可以通过列出所有允许的类型来使用array.items
。如果给定类型为.required()
,则数组中必须有一个匹配项:joi API reference
users: Joi.array().items(Joi.object().keys(mySchemaForUserOne).required(),
Joi.object().keys(mySchemaForUserTwo).required(),
// ...)
答案 1 :(得分:0)
您在这里〜
Joi.object().keys({
users: Joi.array().items(
Joi.alternatives()
.conditional('.type', {
switch: [{
is: 'mySchemaForUserOne',
then: Joi.object({ ... }),
}, {
is: 'mySchemaForUserTwo',
then: Joi.object({ ... }),
}],
})
)
})
您可以在此处检查文档=> Joi conditional API