当快速应用程序get()函数中包含错误时,如何跳转到下一个中​​间件(错误处理中间件)

时间:2018-04-03 02:51:02

标签: node.js express error-handling

如何使用next()或其他一些技术跳转到下一个中​​间件(即我的404页面)?

app.get('/events/*', function(req, res){                     // /events/blob
var text = req.originalUrl.slice(8, req.originalUrl.length); // text = "blob"
app.locals.queried_event  = obj[text];                      // obj["blob"],if obj["blob"] is present it's ok but if it's not then it throws error
res.render("events"); 
});

1 个答案:

答案 0 :(得分:1)

如果您愿意,可以转到错误处理中间件,但您也可以在此处返回错误:

app.get('/events/*', function(req, res){                     // /events/blob
    var text = req.originalUrl.slice(8, req.originalUrl.length); // text = "blob"
    app.locals.queried_event  = obj[text];                      // obj["blob"],
    if (obj.blob) {
        res.render("events"); 
    } else {
        res.status(404).render("404page");
    }
});

如果你想转到你的错误中间件,你会声明next参数并调用它:

app.get('/events/*', function(req, res, next) {                     // /events/blob
    var text = req.originalUrl.slice(8, req.originalUrl.length); // text = "blob"
    app.locals.queried_event  = obj[text];                      // obj["blob"],
    if (obj.blob) {
        res.render("events"); 
    } else {
        next();
    }
});

或者,您可以传递一个特定的错误对象,直接转到错误处理中间件next(err),您可以在其中传递一些特定的错误对象。