Проблемы с перенаправлением при использовании MySQL в качестве хранилища сеансов - PullRequest
0 голосов
/ 13 июня 2019

Я установил приложение Node.js, где я использую сессии и сохраняю их в MySQL.При использовании MemoryStorage перенаправления работают нормально, но при использовании MySQL req.session не обновляется, пока вы не перезагрузите или не перейдете на другую страницу, и я вынужден заменить каждый res.redirect('/...') на res.render() изна той же самой странице, чтобы отобразить что-либо в req.session немедленно.

Я пробовал использовать оба параметра return res.redirect() и нет, а также setTimeout, ни один из них не работает.Я не могу понять это, и мне нужно, чтобы сессии были сохранены в БД

router.get('/student-sign-up', function (req, res, next) {
    res.render('student/signUp', {
        title: 'Sign up',
        errors: req.session.errors
    });
    req.session.errors = null; //to flush them on reload
}).post('/student-sign-up', function (req, res, next) {
    //Some form checks
    let errors = req.validationErrors();
    if (errors) {
        req.session.errors = errors;
        req.session.signUpSuccess = false;
        return res.redirect('/student-sign-up');
    }
//...
}

Выше следует перенаправить на ту же страницу и отображать ошибку (я использую Handlebars в качестве движка просмотра), если былиодин, но он просто перенаправляет, и если вы обновляете вручную или повторно отправляете неисправный, то он отображает его.То же самое для входа в систему (как успех, не входящий в дом платформы, так и сбой, не показывающий ошибки).Как будто все отстает на 1 шаг ...

1 Ответ

0 голосов
/ 14 июня 2019

ОК, я нашел решение. В соответствии с документами express-session все, что мне нужно было сделать, это принудительно сохранить и затем перенаправить, как показано ниже:

req.session.save((err) => {
            if (err) {
                req.locals.error = err;
                return res.redirect('/');
            }
            return res.redirect('/next-section');
        });

Я оставлю это здесь для всех, у кого может быть такая же проблема!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...