Как правильно перенаправить в NodeJS / ExpressJS?
Я создаю приложение для корзины покупок в nodejs / expressjs. У меня возникают некоторые проблемы с перенаправлением на правильную страницу после того, как пользователь вошел в систему. Я нашел несколько статей, которые тесно связаны, но все мои попытки исправить это из этих статей не дают результата.
access: function(req, res){
var data = JSON.parse(req.body.data);
console.log(data);
Customers.findOne({"custEmail": data.custEmail}, function(err, user){
if(err){
console.log(err);
res.send("error");
}if(!user){
console.log("user not found");
res.send("error");
}else{
console.log("user found");
bcrypt.compare(data.custPassword, user.custPassword, function(err, reponse){
if(reponse){
req.session.regenerate(function(err){
if(err){
console.log(err);
res.send("error");
}else{
req.session.success = true;
res.send("Success");
//res.redirect('/');
}
});
}else{
console.log("error");
}
});
}
});
Что происходит, пользователь вводит свои данные для входа и нажимает кнопку входа. Ajax-запрос отправляет данные в эту функцию доступа. Функция начинается с проверки, существует ли пользователь в базе данных. Если это так, то он продолжает сравнивать пароль bcrypt, если они равны, они успешно входят в систему и, если они не равны, то, очевидно, он выдает ошибку.
Проблема, кажется, здесь:}else{ req.session.success = true; res.send("Success"); //res.redirect('/'); }
Когда электронная почта пользователя и пароль совпадают, это происходит прямо здесь. В нем говорится ... установите для этого сеанса значение true, чтобы пользователь мог получить доступ к страницам, на которых этот сеанс требуется, и затем отправляет сообщение об успехе обратно в запрос ajax. В настоящее время это прекрасно работает, и res.send отправляется на передний конец. Когда я раскомментирую res.redirect, происходит ожидаемый результат «невозможно установить заголовки после того, как они установлены». Поэтому, когда я закомментирую res.send, res.redirect просто перестает работать вообще. Никаких ошибок, никаких поломок, просто ничего.
Мне интересно, почему этот редирект здесь не будет работать? Заголовки не устанавливаются где-либо еще в этой функции, и ожидаемый результат должен состоять в том, что перенаправление будет работать отлично. Любая помощь очень ценится. Благодарю.