Npm 如何应用。或在joi验证中

Npm 如何应用。或在joi验证中,npm,json-schema-validator,joi,Npm,Json Schema Validator,Joi,嗯,我有下面的Joi对象,我试图使用Or方法,正如你们看到的,我有两个对象包含我想使用的电话或方法,但我失败了 body: Joi.object().keys({ member: Joi.object().required().keys({ id: Joi.string().required(), phone: Joi.string().max(30), email: Joi.

嗯,我有下面的Joi对象,我试图使用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')
我想做的是,我需要一部手机,或者是在会员中。手机或者是在账单地址中。手机至少有一个存在
上面的代码不起作用,我该怎么办?

您尝试使用的功能最近才进入Joi版本,因此第一步是确保您至少需要v14版本的Joi

对象上的嵌套路径。或/nand/和/xor/带/不带()

现在支持这些函数上的嵌套路径。我认为这是一个突破性的改变,因为你可能(但你真的不应该)在这些验证中使用虚线路径,因为你想检查点属性。如果是这样的话,目前还没有迁移路径,但我们可以在一个问题中讨论


对于较旧的版本,它需要将
.when()
.alternations()
、自定义验证器或具有多个模式的手动编写逻辑进行杂乱的组合。

最近在中解决了这一问题。检查你使用的版本,并考虑升级,如果你是14。@ AKHH你可以把它作为答案吗?我真的不想删除这个问题,但是,有很多开发人员仍然在使用旧版本,至少他们很久以来一直在开发它,他们没有像charm那样升级它