2017-03-14 11 views
0

このコマンドを実行する際に問題があります。複数のアイテムを削除すると起こります。 NodeJSはエラーを返しますが、サーバーを再起動するとアイテムは正常に削除されます。ここでNodeJS:ヘッダーを送信した後にヘッダーを設定できませんか?

私のコードです:エラーは何が起こったかを説明します

router.delete('/:userID/hobbies', function(req, res, next) 
    { 
     var userID = req.params.userID; 
     if (req.user._id == userID) 
     { 
      hobbiesData.find({owner: userID, isComplete: true},function(err, userHobbies) { 
        userHobbies.forEach(function (userHobby) 
        { 
         usersData.findByIdAndUpdate(
          userID, 
          { $pull: { hobbies: userHobby._id }}, 
          { new: true, upsert: true }, 
          function(err, results) 
          { 
           if(err) 
           { 
            return res.end(err); 
           } 
           else 
           { 
            userHobby.remove(function(err) { 
             if(err) 
             { 
              return res.end(err); 
             } 
             else 
             { 
              return res.json(results); 
             } 
            }); 
           } 
          } 
         ); 
        }); 
      }); 
     } 

     else 
     { 
      res.redirect('/'); 
     } 

}); 

答えて

2

、あなたは各項目にres.endを呼んでいる、しかし、あなただけのリクエストごとに一度それを行うことができます。 end()はsend()とjson()などのためにフードの下で呼び出されることに注意してください。

すべての更新が行われるのを待たずに応答するか、またはすべてが発生した後に応答します。しかし、削除ごとにそれをしないでください。

関連する問題