好吧,我有以下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 中,至少有一个电话存在 上面的代码不起作用我该怎么办?
答案 0 :(得分:1)
您尝试使用的功能直到最近才出现在Joi的14.0.0版本中,因此第一步是确保您至少需要使用Joi v14。
object.or / nand / and / xor / with / without()上的嵌套路径
现在支持这些功能上的嵌套路径。我认为这是一项重大突破,因为您可能(但实际上不应该)在那些验证中使用了点划线的路径,因为您想检查点划线的属性。如果是您的情况,目前没有迁移路径,但是我们可以在一个问题中进行讨论。
对于较旧的版本,它可能需要.when()
或.alternatives()
的混乱组合,自定义验证器或具有多个模式的手动编写的逻辑。