✨
joiのerrorsのtypeとcodeがある問題
結論
joi v15 → joi v16
のアップデートでerr.typeがerr.codeに変わってるなど大きな変更がある
v15
v16
どんな時に悩んだか
joiでエラー文言をカスタムするswitch文を書いていましたが、typeとcodeの2通りがあることに気づきどうして違うのかを調べて見ました。
下記は拝借してきたコードですが、ここでは古いtypeで書かれていて困惑したりします。
var schema = Joi.object().keys({
firstName: Joi.string().min(5).max(10).required().error(errors => {
errors.forEach(err => {
switch (err.type) {
case "any.empty":
err.message = "Value should not be empty!";
break;
case "string.min":
err.message = `Value should have at least ${err.context.limit} characters!`;
break;
case "string.max":
err.message = `Value should have at most ${err.context.limit} characters!`;
break;
default:
break;
}
});
return errors;
}),
// ...
});
Discussion