ExpressJS - 从中​​间件发送回复

时间:2015-07-09 13:10:10

标签: node.js express

对于发生的每个请求,我想检查查询字符串中的参数是否已设置。如果没有,应用程序应发送一定的消息;否则,适当的路线。

app.js

app.use(function(req,res,next){
    if(req.query.key === undefined) {
        res.send("Sorry!");
    }
    req.db = db;
    next();
});

app.use('/', routes);

如果在没有参数的情况下请求'/',则会显示Sorry!。但是,我的ExpressJS应用程序崩溃了这个错误:

Error: Can't set headers after they are sent.

我不完全确定为什么会这样。我已经尝试将支票移到index.js中的路线本身,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:4)

那是因为你仍在继续执行并调用next(),它会移动到下一个中​​间件或堆栈中的路由。

提早返回以阻止它移动到下一个中​​间件。

app.use(function(req,res,next){
    if(req.query.key === undefined) {
        //return out of the function here
        return res.send("Sorry!");
    }
    req.db = db;
    next();
});

app.use('/', routes);