【发布时间】:2020-10-26 19:01:58
【问题描述】:
我必须根据一些条件进行验证:
如果键 pay_method 的值为 upi,则 其中一个键 services
或combos 必须存在。
如果键 pay_method 的值是 pay_later,则 这些键都不存在。
我尝试将.when 和.xor 以及.when 和.oxor 结合起来。
但是,我无法达到预期的效果。
Joi.object({
pay_method: Joi.string().valid('upi', 'later').required(),
combos: Joi.string().when('pay_method', {
is: 'later',
then: Joi.forbidden(),
}),
services: Joi.string().when('pay_method', {
is: 'later',
then: Joi.forbidden(),
}),
}).oxor('combos', 'services')
.messages({ 'object.oxor': 'Both Combo and Service can not be ordered together!' })
待验证的数据:
{
pay_method: 'later',
combos: 'asdfasf',
}
根据文档:
xor : 不能一起出现但需要其中之一的键名
oxor : 不能一起出现但不需要的键名
请在此处使用以上详细信息进行测试https://joi.dev/tester/
【问题讨论】:
-
我的回答解决了你的问题吗?
标签: javascript node.js joi