【问题标题】:JOI full path to key erroring outJOI 键出错的完整路径
【发布时间】:2018-06-27 15:51:16
【问题描述】:

所以我使用 JOI 编写模式验证。 https://github.com/hapijs/joi

我想对抛出的错误的行为做一个小的改变。

这是我现在遇到的错误:

[
    {
        "name": "api_schema",
        "message": "\"architect\" with value \"Someasda2342432ssda\" fails to match the required pattern: /^[a-zA-Z_ ]{2,50}$/"
    }
]

但我想收到的是:

[
        {
            "name": "api_schema",
            "message": "\"api_config.team_info.architect\" with value \"Someasda2342432ssda\" fails to match the required pattern: /^[a-zA-Z_ ]{2,50}$/"
        }
    ]

如您所见,我需要错误消息指示失败密钥的所有路径,而不仅仅是其名称。我知道 JOI 具有自定义错误消息的能力,并且我可以这样做,但是我没有找到一种方法来获取失败键的整个路径的值。

有人可以建议吗?

【问题讨论】:

    标签: node.js schema customization joi


    【解决方案1】:

    您可以使用callback 选项。像这样的

    const schema = Joi.object().keys({
      a: Joi.string()
    });
    
    const object = { a: 123 };
    const err = Joi.validate(object, schema, (err, value) => {
      // console.log('original error', err);
      err.newValidationError = 'new message ' + err.details[0].message;
      return err;
    });
    
    console.log(err);
    

    如果您正在使用 Hapi,您还可以查看 failAction 作为回答 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多