是的条件对象验证不起作用
Yup conditional object validation not working
我正在尝试为对象定义 Yup 验证 - 如果已定义的兄弟项设置为 true,则字段类型为 object 应该是必需的,否则不是
示例:
const { object, string, number, date, boolean } = require('yup')
const contactSchema = object({
isBig: boolean(),
count: number()
.when('isBig', {
is: true, // alternatively: (val) => val == true
then: number().min(5),
otherwise: number().min(0),
}),
complexOne: object({
simpleOne: string(),
})
.when('isBig', {
is: true,
then: object().required(),
otherwise: object(),
})
})
传入验证的对象:
{
isBig: true,
count: -1,
}
如您所见,我故意不通过 complexOne
因为我想让 Yup 显示错误。 count 的验证工作正常 - 如果值小于 0 并且 isBig 设置为 true, Yup 将正确显示错误消息 ValidationError: count must be greater than or equal to 5
不幸的是,它完全忽略了 complexOne 字段的条件验证集。是的,要么不支持对象类型的 when
,要么我做错了什么。
感谢您的帮助
我正在尝试为对象定义 Yup 验证 - 如果已定义的兄弟项设置为 true,则字段类型为 object 应该是必需的,否则不是
示例:
const { object, string, number, date, boolean } = require('yup')
const contactSchema = object({
isBig: boolean(),
count: number()
.when('isBig', {
is: true, // alternatively: (val) => val == true
then: number().min(5),
otherwise: number().min(0),
}),
complexOne: object({
simpleOne: string(),
})
.when('isBig', {
is: true,
then: object().required(),
otherwise: object(),
})
})
传入验证的对象:
{
isBig: true,
count: -1,
}
如您所见,我故意不通过 complexOne
因为我想让 Yup 显示错误。 count 的验证工作正常 - 如果值小于 0 并且 isBig 设置为 true, Yup 将正确显示错误消息 ValidationError: count must be greater than or equal to 5
不幸的是,它完全忽略了 complexOne 字段的条件验证集。是的,要么不支持对象类型的 when
,要么我做错了什么。
感谢您的帮助