我想保存一个字符串数组,但是我收到以下错误:
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'
});
});
答案 0 :(得分:1)
在整个数组处理完成后发送响应,
以前您的req.body.mySkills
包含数组,您处理数组中的第一个元素并保存它并执行res.json
并再次处理数组中的第二个元素并发送响应头{再次{1}},这会引发错误res.json
因为你已经发送了响应标题。
Error: Can't set headers after they are sent.