【问题标题】:How can I specify a custom error message for a Joi xor()?如何为 Joi xor() 指定自定义错误消息?
【发布时间】:2021-03-16 16:56:32
【问题描述】:

我有一个架构,可以在运行时添加两个可选表单之一,并且必须添加其中一个才能通过验证。我已经使用xor() 来解决这个问题,但我想设置一个自定义错误消息,例如“您必须添加一个formA 或formB 才能继续”,而不是默认的"value" must contain at least one of [formA, formB]

我试过打电话给.xor().message(),但我得到了错误

错误:无法将规则应用于空规则集或最后添加的规则不支持规则属性

如何为 Joi xor() 指定自定义错误消息?

【问题讨论】:

    标签: joi


    【解决方案1】:

    这适用于Joi 版本17.2.1

    const Joi = require('joi');
    
    const schema = Joi.object().keys({
       formA: Joi.string(),
       formB: Joi.string(),
    })
    .xor('formA', 'formB')
    .messages({
      'object.xor': 'You must add a formA or formB to continue'
    })
    .required()
    
    const data = {
      formA: 'formA',
      formB: 'formB'
    };
    
    const report = schema.validate(data)
    console.log(report.error.message)
    

    输出

    You must add a formA or formB to continue
    

    【讨论】:

      【解决方案2】:

      当两个键都丢失时,您应该使用object.missing

      object.xor 两个键都存在时出现错误。

      .xor('formA', 'formB')
      .messages({
        'object.missing': 'You must add a formA or formB to continue',
        'object.xor': 'You must provide either formA or formB'
      })
      

      【讨论】:

        猜你喜欢
        • 2018-07-21
        • 1970-01-01
        • 1970-01-01
        • 2020-02-12
        • 2019-03-21
        • 2020-09-13
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        相关资源
        最近更新 更多