2017-11-03 23 views
0

select_value:function(del){ var self = this;エラー:送信後にヘッダーを設定できません。

 self.$http.post("/sales/team_leader_id_table", {"id": del,}).then(function(res){ 
      var parentdata = res.body.result[0];    

     },function(err){ 
      alert(err); 
     }); 



    }, 

//サービス router.post( '/ team_leader_id_table'、関数(REQ、RES、次){

for (var i = 0; i < req.body.id.length; i++) { 
    console.log('SELECT * FROM `user` where id = "'+req.body.id[i]+'" '); 
    connection.query('SELECT * FROM `user` where id = "'+req.body.id[i]+'" ', function (error, results, fields) { 
     if (!error) { 
      console.log(results); 
      res.json({"status": "ok", "result": results}); 
     } else { 
      res.json({"status": "failed", "message": error.message}); 
     } 
    }); 

} 

})。あなたは、それはあなたのNodeJSをクラッシュする一つのリクエストごとに複数の応答を返す、エクスプレスでは違法つの要求あたりのないループ応答をだことができ

//error 
C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\Parser.js:80 
     throw err; // Rethrow non-MySQL errors 
     ^
Error: Can't set headers after they are sent. 
    at validateHeader (_http_outgoing.js:489:11) 
    at ServerResponse.setHeader (_http_outgoing.js:496:3) 
    at ServerResponse.header (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\express\lib\response.js:719:10) 
    at ServerResponse.send (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\express\lib\response.js:164:12) 
    at ServerResponse.json (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\express\lib\response.js:250:15) 
    at Query._callback (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\routes\sales.js:1662:21) 
    at Query.Sequence.end (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\sequences\Sequence.js:88:24) 
    at Query._handleFinalResultPacket (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\sequences\Query.js:139:8) 
    at Query.EofPacket (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\sequences\Query.js:123:8) 
    at Protocol._parsePacket (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\Protocol.js:279:23) 
    at Parser.write (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\Parser.js:76:12) 
    at Protocol.write (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\protocol\Protocol.js:39:16) 
    at Socket.<anonymous> (C:\Users\HP 840 G3\Desktop\ERP\sp_workspace\node_modules\mysql\lib\Connection.js:103:28) 
    at emitOne (events.js:115:13) 
    at Socket.emit (events.js:210:7) 
    at addChunk (_stream_readable.js:264:12) 
+0

forループでres.jsonを使用しないで、結果をforループに蓄積し、forループの後にres.jsonを使用してください。 –

+0

[Error:クライアントへの送信後にヘッダーを設定できません] https://stackoverflow.com/questions/7042340/error-cant-set-headers-after-they-are-sent-to-the-client) – MikaS

+0

ループ内で非同期関数を呼び出す場合は、 'async'パッケージから' eachOf'を使用してください。 こちらのドキュメントをご覧ください。http://caolan.github.io/async/docs.html#eachOf – giankotarola

答えて

0

(ExpressはunhandledExceptionを返します)。ループし、データを配列に挿入し、配列から値を返す(もちろん、ループの外に)。

関連する問題