Ram*_*ghe 6 node.js hapijs joi
我正在使用 hapi js 和 couchbase 开发 API。我正在使用 log4js 来记录错误。
{
// Add a user level
method: 'POST',
path: '/api/v1/userlevel',
config: {
handler: (request, reply) => {
const userlevel = new Userlevel(request.payload);
userlevel.save((err) =>{
if(err) {
return reply({
status: 400,
message: err.message
}).code(400);
// logger.error(err);
}
// logger.debug(reply);
return reply(userlevel).code(201);
});
},
validate: {
payload: {
group_id: Joi.string(),
name: Joi.string(),
status: Joi.string(),
index_id: Joi.number(),
device_id: Joi.string(),
created_at: Joi.string(),
updated_at: Joi.string(),
sys_version: Joi.string()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用无效数据向此端点发送 POST 请求时,它显示错误
POST 请求
{
"group_id" : "test1",
"name" : "test1",
"status":"test1",
"index_id":1,
"device_id":"test1",
"created_at":7,
"updated_at":7,
"sys_version":7
}
Run Code Online (Sandbox Code Playgroud)
错误
{"statusCode":400,"error":"Bad Request","message":"child \"created_at\" fails because [\"created_at\" must be a string]","validation":{"source":"payload","keys":["created_at"]}}
Run Code Online (Sandbox Code Playgroud)
我需要记录此错误消息。我试图找到这条消息产生的地方。但我找不到。请帮忙。先感谢您。
如果您愿意迁移到 Hapi 17,以下内容将起作用。如果您仔细阅读文档,很可能会有类似的 Hapi 16 解决方案。
failAction如果路由验证失败,您可以使用回调方法,这里似乎是记录错误的最佳位置。
const config = {
routes: {
validate: {
failAction: async (request, h, err) =>
{
if (err.isJoi)
{
// do something with error
console.log(err.message);
}
throw err;
}
}
}
};
const server = new Hapi.Server(config);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |