Что касается вашей особой проблемы, вам нужно переместить res.redirect('/adminDashboard');
в свой блок else
.Также читая предыдущие комментарии, я обнаружил, что вы используете переменную res
в нескольких местах - router.post('/login',(req,res,next)=> {
и pool.query(text, values, (err, res) => {
.Назовите значение, отличное от res
, в любом месте.
Поскольку вы упомянули, что у вас возникают трудности с пониманием обратного вызова, вот небольшое вступление.Всякий раз, когда вы выполняете функцию в Javascript, вам необходимо проверить, выполняется ли эта функция синхронно или асинхронно.Если async, как и функция pool.query
, вам нужно предоставить обратный вызов - по сути, еще один метод, который необходимо запустить, когда данные извлекаются из исходного метода.
Когда Javascript начинает выполнять ваш код, он вызоветметод pool.query
, но он не будет ждать результатов!Вместо этого он пойдет и выполнит строку кода res.redirect('/adminDashboard');
.Вот почему вам нужно переместить эту строку в ваш обратный вызов.
И в этом вся прелесть Javascript.Запуск методов async делает вашу программу быстрее, потому что теперь ваш поток не сидит без дела.Он не ждет результатов, но выполняет следующую операцию.Он вернется и выполнит функцию обратного вызова, когда ваш оригинальный метод будет выполнен и вернул данные обратно.
Обновление
В соответствии с вашим комментарием, если вы переименуете res
в вашем пуле, какэто, pool.query(text, values, (err, queryRes) => {
, вы все равно можете сделать res.redirect('/adminDashboard');
внутри блока else, потому что у вас все еще есть доступ к родительской переменной res
.