Joi.js返回奇怪的错误信息
问题描述:
我正在使用joi来验证我的apis请求。所有的东西都很好,除了错误消息以斜杠“\”字符返回字段名称。Joi.js返回奇怪的错误信息
{
"message": "validation error",
"error": {
"status": 400,
"statusText": "Bad Request",
"errors": [
{
"field": "email",
"location": "body",
"messages": [
"\"email\" must be a valid email"
],
"types": [
"string.email"
]
}
]
}
}
任何人都有这个问题吗?
答
默认情况下,您的变量名称将放在引号中,并且这些引号是escaped with the backslash character。我找不到这个原因,所以也许别人可以在那里权衡。
但是,要覆盖此行为,当您拨打joi.validate()
并传入可选options
参数时,您可以override the language
option。这个例子只是重写字符串的转义。
var joi = require('joi');
var schema = joi.object().keys({
name: joi.string().required()
});
var x = {
name: 123
};
var options = {
language: {
string: {
base: '{{key}} must be a string'
}
}
};
var result = joi.validate(x, schema, options);
console.log(JSON.stringify(result, null, 2));
要覆盖转义字符的所有类型,在你的options
指定key
参数。注意最后的空间。
var options = {
language: {
key: '{{key}} '
}
};
如何覆盖language
更详细的例子可以发现here。