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