首页 > 解决方案 > Node/Express 好的错误处理方法?

问题描述

我有几个 mongoose route 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 的状态?

标签: node.jsexpresserror-handling

解决方案


请参阅快速错误处理文档

您应该定义自己的“自定义”错误处理中间件,而不是在您自己的中间件函数中返回 404:

function errorHandler (err, req, res, next) {
   // Decide what to return to client here based on type of error.  
}

确保在其他 app.use() 和路由调用之后最后定义错误处理中间件。


推荐阅读