У вас есть промежуточное ПО, которое должно завершить вызов next()
, чтобы можно было вызвать следующее промежуточное ПО в стеке. См. Express Использование документации промежуточного программного обеспечения .
Посмотрите на логи c - если inv
отсутствует в строке запроса, но существует в сеансе, то next()
никогда не называется. Это согласуется с вашей проблемой - вы добавляете inv
к вашему сеансу, а затем при следующей загрузке страницы вы навсегда застряли в вашем промежуточном программном обеспечении. Вместо этого вы хотели бы получить logi c следующим образом:
app.use(function (req, res, next) {
if (req.query.inv) {
/* .... */
} else if (!req.session.inv) {
req.session.inv= '';
}
next(); // this makes sure that next() always gets called
});
У вас также есть явный SQL Injection риск, потому что вы берете необработанное значение строки запроса и передаете его непосредственно в Ваш запрос. Вам нужен параметризованный запрос - я связался с документацией по узлу - postgres, хотя я не уверен, какую базу данных вы на самом деле используете. На данный момент ваш запрос не безопасен.