【问题标题】:Node / Express good error handling approach?Node/Express 好的错误处理方法?
【发布时间】:2019-01-27 08:07:11
【问题描述】:

我有几个 mongoose route api 函数,我想知道错误处理的最佳方法是什么。下面是一个示例函数。在第一部分中,我正在做一些 mongoose 数据库查询,然后我使用 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.js express error-handling


    【解决方案1】:

    见快递error handling documentation

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多