对于发生的每个请求,我想检查查询字符串中的参数是否已设置。如果没有,应用程序应发送一定的消息;否则,适当的路线。
在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
中的路线本身,但我仍然遇到同样的错误。
答案 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);