我想保存字符串猫鼬的数组,但我得到的错误
问题描述:
我要救一个字符串数组,但我收到以下错误:我想保存字符串猫鼬的数组,但我得到的错误
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'
});
});
答
发送响应整个阵列过程完成后,
以前在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'
});
});
现在就开始工作吧。 – user3450754
我已经将完整的正确答案添加到了我最初的问题中。但是我会提高你的答案,因为它有帮助。 – user3450754
我的解决方案是'错误:发送后无法设置标题',我向你提供了。这是由你后来如何处理代码,修改它。这是解决方案,你必须接受它 –