【发布时间】:2019-10-14 18:03:39
【问题描述】:
我一直在尝试通过 joi 模式验证我的有效负载。但它并没有返回我在模式中编写的错误,而是只显示一个错误。即使我给像 name=int 这样的有效负载,尽管给第二个输入(即用户名)一个整数值,但只显示一个自定义错误:
{ “状态码”:400,
“错误”:“错误请求”,
"message": "名字需要一个字符串" }
应该打印出来
{ “状态码”:400,
“错误”:“错误请求”,
"message": "name 需要一个字符串"/"username 需要一个字符串" }
这是我的代码: server.js
const server = Hapi.server({
port: 3000,
routes: {
validate: {
options: {
abortEarly: false
},
failAction: async (request, response, err) => {
throw Boom.badRequest(err.message);
},
},
},
});
joi-schmea.js
const NamePayload = Joi.object().keys({
name: Joi.string().required().error(new Error('name expecting a string')),
username: Joi.string().required().error(new Error('username expecting a string')),
age: Joi.integer().required().error(new Error('age expecting a number')),
});
routes.js:
validate: {
payload: Schema.NamePayload,
},
我希望邮递员显示所有错误消息,而不仅仅是第一条错误消息。而且我也不想使用默认错误消息 child must be string/int 类型错误,这就是我使用新错误的原因。我已阅读有关该错误的所有 stackoverflow 文章,但没有解决我的问题。这是我使用的 hapi 和 joi 版本:
@hapi/joi:^15.0.3,
@hapi/hapi:^18.3.1,
【问题讨论】:
标签: javascript node.js hapijs joi