根据另一个键的值验证要显示的两个字段之一或不存在的字段

时间:2020-10-26 10:23:22

标签: javascript node.js joi

我必须根据一些条件进行验证:

如果键setIcon(urlToNewImage)的值为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:键名不能一起出现,但不需要。

请在此处测试以上详细信息https://joi.dev/tester/

1 个答案:

答案 0 :(得分:0)

当pay_method为'upi'时,备选方案中的前两个选择是使用连击还是使用服务。当pay_method为“以后”时,最后一个不允许组合和服务同时存在。

class A
{
    void Afunction()
    {
        B::Afunction(); // This is not valid as A::Afunction() does not inherit from B::Afunction() 
    }

};

class B : public A
{
    void Afunction();
}