2017-03-03 58 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

我的解決方案是'錯誤:發送後無法設置標題',我向你提供了。這是由你後來如何處理代碼,修改它。這是解決方案,你必須接受它 –

相關問題