#node.js #http #post #header
#node.js #http #Публикация #заголовок
Вопрос:
Я пытаюсь обновить свою базу данных mongodb, а затем перенаправить пользователя обратно на страницу с формой.
Это обычная проблема «Невозможно установить заголовки после их отправки клиенту», которая часто публикуется здесь, но не смогла найти никакого решения для моей проблемы.
Я использую NodeJS и express, без php или jquery.
const mongoose = require('mongoose');
var User = mongoose.model('user');
var createUser = function(req, res){
console.log(req.body)
var user = new User({
"firstname": req.body.firstname,
"surname": req.body.surname,
"email": req.body.email,
"age": req.body.age
});
user.save(function(err, newUser){
if(!err){
res.send(newUser);
}
else{
res.sendStatus(400);
}
});
res.redirect('/');
};
module.exports.createUser = createUser;
Я получаю сообщение об ошибке «Не удается установить заголовки после их отправки клиенту»
Он обновляет мою базу данных mongodb, но после сбоя сервера.
Не очень разбираюсь в заголовках запросов, буду признателен за любую помощь 🙂
Ответ №1:
Поскольку ваш запрос был успешно выполнен, if
выполняется блок здесь, который отправляет некоторый ответ клиенту. Затем остальная часть выполнения продолжается до тех res.redirect('/')
пор, пока он снова не попытается отправить какой-либо ответ (из того, что находится в /
маршруте).
user.save(function(err, newUser){
if(!err){
// Here >>
res.send(newUser);
}
else{
res.sendStatus(400);
}
});
// and finally >>
res.redirect('/');
Так что либо делайте return res.send(newUser);
, либо делайте перенаправление только в конце, а не оба