const schema = {
a: Joi.any(),
b: Joi
.boolean()
.default(false),
c: Joi
.boolean()
.default(false)
}如何将上述Joi模式修正为与以下规则匹配
当true,a是forbidden,否则a是required,则b或c之一可以是true,而b或c是true,a是forbidden。
发布于 2021-09-28 06:19:37
Joi.object( {
a: Joi
.boolean()
.default(false),
b: Joi
.boolean()
.default(false),
c: Joi.string().when(
'a', {
is: false,
then: Joi.when(
'b', {
is: false,
then: Joi.string().required()
}
)
}
),
})我在问问题之前尝试过嵌套when,但由于规则的顺序,它以前不起作用。
Joi.object( {
c: Joi.string().when(
'a', {
is: false,
then: Joi.when(
'b', {
is: false,
then: Joi.string().required()
}
)
}
),
a: Joi
.boolean()
.default(false),
b: Joi
.boolean()
.default(false),
})第二个模式中的default值在when检查时没有设置,因此如果您验证一个空对象{},则第一个模式有Validation Error: "c" is required错误,而第二个Passed带有{a: false, b: false}。
https://stackoverflow.com/questions/69336102
复制相似问题