如何在joi验证中应用.OR

时间:2018-10-29 10:06:05

标签: npm json-schema-validator joi

好吧,我有以下Joi对象,我尝试使用Or方法,如您所见,我有两个对象包含我想使用Or方法但失败的电话

body: Joi.object().keys({
            member: Joi.object().required().keys({
                id: Joi.string().required(),
                phone: Joi.string().max(30),
                email: Joi.string().required().max(255)
            }),
            billingAddress: Joi.object().keys({
                line1: Joi.string().required(),
                line2: Joi.string().max(60),
                city: Joi.string().required().max(50),
                state: Jio.required(),
                postalCode: Joi.string().required(),
                phone: Joi.string().max(15)
            })
}).or('member.phone','billingAddress.phone')

我想做的是,我需要一个电话进入 member.phone billingAddress.phone 中,至少有一个电话存在 上面的代码不起作用我该怎么办?

1 个答案:

答案 0 :(得分:1)

您尝试使用的功能直到最近才出现在Joi的14.0.0版本中,因此第一步是确保您至少需要使用Joi v14。

  

object.or / nand / and / xor / with / without()上的嵌套路径

     

现在支持这些功能上的嵌套路径。我认为这是一项重大突破,因为您可能(但实际上不应该)在那些验证中使用了点划线的路径,因为您想检查点划线的属性。如果是您的情况,目前没有迁移路径,但是我们可以在一个问题中进行讨论。

对于较旧的版本,它可能需要.when().alternatives()的混乱组合,自定义验证器或具有多个模式的手动编写的逻辑。