Для каждого запроса, который происходит, я хотел бы проверить, установлен ли параметр в строке запроса. Если нет, приложение должно отправить определенное сообщение; в противном случае, маршрут по мере необходимости.ExpressJS - Отправить ответ от промежуточного программного обеспечения
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
, но я все равно получаю ту же ошибку.
Спасибо, это сработало. По какой-то причине я предположил, что 'res.send()' по существу эквивалентен оператору return. – tverghis
@cmlndz В этом случае 'if (req.query.key)' отлично, нет необходимости в строгой проверке типов. Плюс вышеупомянутый метод действителен, см. Http://stackoverflow.com/questions/4725603/variable-undefined-vs-typeof-variable-undefined. Даже если нет параметра запроса, всегда определяется 'req.query'. –
@BenFortune вы правы в req.query (возможно, я перетащил эту и из старой версии Express). Thnx – cmlndz