我有一些猫鼬的路线api函数,我想知道什么是错误处理的最佳方法。下面是一个示例函数。在第一部分中,我正在进行猫鼬数据库查询,然后使用exec执行异步功能,然后捕获任何错误,否则我将进一步处理数据。
exports.getStornoData = function(req,res,next) {
Produkt.aggregate([
{
"$unwind":"$DemonstratorWerte"
},
{
$match: {
"DemonstratorWerte.Demonstrator":+req.params.demo_id, "DemonstratorWerte.RstorniertDemo.B":true
}
},...
]).exec(function(err, result) {
if (err) {
next(err);
res.status('404').send();
}
else {
//process data...
res.locals.stornierungen = stornierungenArray;
next();
}
})
}
该错误处理方法是否可以接受?如何在不干扰用户体验的地方捕获大多数错误并输出(或收集)错误?
if (err) {
next(err);
res.status('404').send();
}
这对next(err)正确,然后通过方法链接发送404状态吗?
答案 0 :(得分:0)
参见快递error handling documentation。
与其在您自己的中间件函数中返回404, 您应该定义自己的“自定义”错误处理中间件:
function errorHandler (err, req, res, next) {
// Decide what to return to client here based on type of error.
}
请确保在其他app.use()之后定义错误处理中间件并路由调用。