【问题标题】:How to apply .OR in joi validation如何在 joi 验证中应用 .OR
【发布时间】:2019-04-02 05:49:12
【问题描述】:

好吧,我有以下 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 中,至少其中一个存在 上面的代码不起作用我该怎么办?

【问题讨论】:

  • 最近在v14 中解决了这个问题。检查您使用的版本,如果您
  • @Ankh 您可以将其发布为答案吗?我真的不想删除这个问题但是,有很多开发人员仍在使用旧版本,至少长期以来一直在研究它并且他们没有升级它就像魅力一样

标签: npm json-schema-validator joi


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 2022-01-13
    • 2020-04-27
    • 1970-01-01
    • 2018-09-24
    • 2018-02-03
    • 2017-01-29
    • 2021-08-28
    相关资源
    最近更新 更多