Joi - 根据其他键的值需要
Joi - Required based on value on other key
我想验证只有两个字段(即文本和图像)的输入。 text 和 image 都是字符串,其中之一必须始终存在。当其中一个字段不存在时,另一个字段不能为空字符串。
这是我定义的验证。
text: Joi.string()
.when('image',
{
is: Joi.string(),
then: Joi.string().allow(''),
otherwise: Joi.string().required(),
}
),
image: Joi.string().allow(null),
当我使用以下输入时,验证允许数据通过。我不知道如何更改验证以禁止以下输入。
post: {
text: ''
}
验证时使用 exist()
而不是 string()
:
when('image', {
is: Joi.exist(),
then: Joi.string().allow(''),
otherwise: Joi.string().required(),
})
body:Joi.object({
notifiyto:Joi.string().valid('selectedCustomer','selectedDrivers','allCustomers','allDrivers').required(),
notifiyIds:Joi.when('notifiyto',{
is: Joi.exist().valid('selectedCustomer', 'selectedDrivers'),
then: Joi.required(),
}),
message:Joi.string()
})
我想验证只有两个字段(即文本和图像)的输入。 text 和 image 都是字符串,其中之一必须始终存在。当其中一个字段不存在时,另一个字段不能为空字符串。 这是我定义的验证。
text: Joi.string()
.when('image',
{
is: Joi.string(),
then: Joi.string().allow(''),
otherwise: Joi.string().required(),
}
),
image: Joi.string().allow(null),
当我使用以下输入时,验证允许数据通过。我不知道如何更改验证以禁止以下输入。
post: {
text: ''
}
验证时使用 exist()
而不是 string()
:
when('image', {
is: Joi.exist(),
then: Joi.string().allow(''),
otherwise: Joi.string().required(),
})
body:Joi.object({
notifiyto:Joi.string().valid('selectedCustomer','selectedDrivers','allCustomers','allDrivers').required(),
notifiyIds:Joi.when('notifiyto',{
is: Joi.exist().valid('selectedCustomer', 'selectedDrivers'),
then: Joi.required(),
}),
message:Joi.string()
})