2017-03-03 9 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' 
     }); 
    }); 
    } 

}); 

保存を2回行うことはできませんか?私はここで何が問題になるのか理解していない。接続はまだ開いていますが、別のものを送信する前に閉じておく必要がありますか?

編集:

回答:以前req.body.mySkillsに配列が含まあなたの全体のアレイ工程が行われた後

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

が応答を送信、

、あなたは配列から最初の要素を処理し、保存しますそれを実行して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

Okです。 – user3450754

+0

私は最初の質問に完全な正解を加えました。しかし助けてくれたので、私はあなたの答えをアップアップします。 – user3450754

+0

私の解決策は「エラー:送信後にヘッダーを設定できません」というものでした。後で、コードをどのように扱い、変更するかは、あなた次第です。それは解決策であり、あなたはそれを受け入れる必要があります。 –

関連する問題