JOI关键错误输出的完整路径

时间:2018-01-18 14:28:32

标签: node.js schema customization joi

所以我正在使用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能够自定义错误消息,我可以这样做,但我找不到一种方法来获取失败的密钥的整个路径的值。

有人可以提供建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用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