POST请求,无法在客户端之后设置标头,更新数据库和重定向

时间:2019-04-10 02:32:13

标签: node.js http post header

我正在尝试更新我的mongodb数据库更新,然后将用户重定向到具有表单的页面。

这是通常的问题 “将标头发送到客户端后无法设置标头” 该消息经常发布在这里,但找不到解决我问题的方法。

我正在使用nodeJS表示,没有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 :(得分:0)

由于查询已成功执行,因此此处的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);或仅在结尾处进行重定向不是全部