Node / Express良好的错误处理方法?

时间:2018-08-21 07:21:16

标签: node.js express error-handling

我有一些猫鼬的路线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状态吗?

1 个答案:

答案 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()之后定义错误处理中间件并路由调用。