2017-03-03 153 views
0

我要救一个字符串数组,但我收到以下错误:我想保存字符串猫鼬的数组,但我得到的错误

Error: Can't set headers after they are sent.

这是我的代码保存:

router.post('/addalluserskills', function(req, res){ 
    console.log(req.body); 
     var userSkill = new UserSkill(); 
     userSkill.email = req.session.email; 

    for (var i = 0; i < req.body.mySkills; i++){ 

     userSkill.user_skill_id = req.body.mySkills[i]; 
     userSkill.save(function(err){ 
     if(err) return res.send(err); 
     res.json({ 
      message: '201: Successfully added skill' 
     }); 
    }); 
    } 

}); 

我不能做两次保存吗?我不明白这里可能是什么问题。连接是否仍然打开,我需要在发送另一个之前关闭?

编辑:

答:

router.post('/addalluserskills', function(req, res){ 

    for (var i = 0; i < req.body.mySkills.length; i++){ 
     var userSkill = new UserSkill(); 
     userSkill.email = req.session.email; 
     userSkill.user_skill_id = req.body.mySkills[i]; 
     userSkill.save(function(err){ 
     if(err) return res.send(err); 

    }); 
    } 
      res.json({ 
       message: '201: Successfully added skill' 
      }); 

}); 

回答

1

发送响应整个阵列过程完成后,

以前在req.body.mySkills包含数组,你处理从数组的第一个元素并保存它并执行res.json并再次处理阵列中的第2个元素,并且您将再次发送响应标头res.json,这将引发错误Error: Can't set headers after they are sent. ,因为您已经发送了响应标头。

router.post('/addalluserskills', function (req, res) { 
    console.log(req.body); 
    var userSkill = new UserSkill(); 
    userSkill.email = req.session.email; 

    for (var i = 0; i < req.body.mySkills; i++) { 
     userSkill.user_skill_id = req.body.mySkills[i]; 
     userSkill.save(function (err) { 
      if (err) return res.send(err); 
     }); 
    } 
    res.json({ 
     message: '201: Successfully added skill' 
    }); 

}); 
+0

现在就开始工作吧。 – user3450754

+0

我已经将完整的正确答案添加到了我最初的问题中。但是我会提高你的答案,因为它有帮助。 – user3450754

+0

我的解决方案是'错误:发送后无法设置标题',我向你提供了。这是由你后来如何处理代码,修改它。这是解决方案,你必须接受它 –

相关问题