2017-06-27 7 views
0

に送られた後、ヘッダーを設定することはできません(ありません常にが、ほとんど)は、エラーがスローされます。ノード、モンゴ、Mongoos - 彼らは私がリモートデータベースを使用すると、いつでも私はレコードを更新または削除していますシンプルなTODO MEANアプリケーションを使用している間、私は奇妙な問題に直面しています

events.js:160 
     throw er; // Unhandled 'error' event 
    ^

Error: Can't set headers after they are sent. 
    at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11) 
    at ServerResponse.header (E:\Examples\mean-stack-todo\node_modules\express\lib\response.js:730:10) 
    at ServerResponse.json (E:\Examples\mean-stack-todo\node_modules\express\lib\response.js:253:10) 
    at E:\Examples\mean-stack-todo\app\routes.js:11:13 
    at E:\Examples\mean-stack-todo\node_modules\mongoose\lib\model.js:3800:16 
    at E:\Examples\mean-stack-todo\node_modules\kareem\index.js:220:48 
    at E:\Examples\mean-stack-todo\node_modules\kareem\index.js:131:16 
    at _combinedTickCallback (internal/process/next_tick.js:73:7) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 

このエラーがPOSTで発生し、実装がどこにあるかDELETE:

app.post('/api/todos', function (req, res) { 

    // create a todo, information comes from AJAX request from Angular 
    Todo.create({ 
     text: req.body.text, 
     done: false 
    }, function (err, todo) { 
     if (err) { 
      res.send(err); 
     } 

     // get and return all the todos after you create another 
     getTodos(res); 
    }); 
}); 

して、削除します。

// delete a todo 
app.delete('/api/todos/:todo_id', function (req, res) { 
    Todo.remove({ 
     _id: req.params.todo_id 
    }, function (err, todo) { 
     if (err) { 
      res.send(err); 
     } 

     getTodos(res); 
    }); 
}); 

エラーの原因がどこにあるかわかりません。

+1

「getTodos(res)」は何をしますか –

+2

あなたは1回以上応答を送信しています。 'getTodos'関数をチェックしてください。また、 'res.send(err);を' res.send(err);に返すように変更してください。 – Edgar

答えて

1

Error: Can't set headers after they are sent

これは、応答が2回以上送信されたことを意味します。これは不可能です。エラーの

、あなたはそれ以外の場合はgetTodos関数が呼び出されると、私はあなたが二回応じると思い、getTodos機能でエラー目と2回目で初めてのリターンを使用する必要があります。

// delete a todo 
app.delete('/api/todos/:todo_id', function (req, res) { 
    Todo.remove({ 
     _id: req.params.todo_id 
    }, function (err, todo) { 
     if (err) { 
      // added the return 
      return res.send(err); 
     } 

     getTodos(res); 
    }); 
}); 
+0

ありがとうございました。しかし、POSTとDELETEで 'TypeError:プロパティを読み込めません 'electionId' undefined'というエラーが出ます。何か案が? –

+0

は、未定義の値で 'electionId'というオブジェクトプロパティにアクセスしようとしていることを意味します。あなたはもっとコードを表示する必要があります、私は任意のelectionIdを見ることができません。しかし、このエラーから、yourObjectが未定義の '' yourObject.electionId'''のようなことをしています。 – Gatsbill

関連する問題