Joi.js return 奇怪的错误信息
Joi.js return a weird error message
我正在使用 joi 来验证我的 API 请求。除了错误消息 return 带有斜线 '\' 字符的字段名称外,一切都很好。
{
"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()
时 override the language
option 并传入可选的 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));
要覆盖所有类型的转义字符,请在 options
中指定一个 key
参数。请注意末尾的 space。
var options = {
language: {
key: '{{key}} '
}
};
可以找到有关如何覆盖 language
的更多详细示例 here。
我正在使用 joi 来验证我的 API 请求。除了错误消息 return 带有斜线 '\' 字符的字段名称外,一切都很好。
{
"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()
时 override the language
option 并传入可选的 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));
要覆盖所有类型的转义字符,请在 options
中指定一个 key
参数。请注意末尾的 space。
var options = {
language: {
key: '{{key}} '
}
};
可以找到有关如何覆盖 language
的更多详细示例 here。