我正在使用joi来验证我的apis请求。一切都很好,除了错误消息返回带有斜杠'\'字符的字段名称。
{
"message": "validation error",
"error": {
"status": 400,
"statusText": "Bad Request",
"errors": [
{
"field": "email",
"location": "body",
"messages": [
"\"email\" must be a valid email"
],
"types": [
"string.email"
]
}
]
}
}
有人遇到过这个问题吗?
答案 0 :(得分:1)
默认情况下,您的变量名称会放在引号中,并且这些引号为escaped with the backslash character。我找不到这个原因,所以也许别人可以在那里权衡。
但要覆盖此行为,您可以joi.validate()
致电options
并传入可选的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));
参数。此示例仅覆盖字符串的转义。
key
要覆盖所有类型的转义字符,请在options
中指定var options = {
language: {
key: '{{key}} '
}
};
参数。注意最后的空格。
language
可以找到有关如何覆盖{{1}}的更详细示例override the language
option。