POST-запрос, Невозможно установить заголовки после клиента, обновления базы данных и перенаправления - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь обновить свое обновление базы данных 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 Ответ

0 голосов
/ 10 апреля 2019

Поскольку ваш запрос был успешно выполнен, здесь выполняется блок 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);, либо перенаправляйте только в конце , но не одновременно

...