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

问题描述

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

如果键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',}).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/

解决方法

当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();
}