2017-11-03 5 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, 입술 옆) {

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

[오류 : 클라이언트에 전송 된 후 헤더를 설정할 수 없음] (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

(익스프레스는 unhandledException를 반환합니다). 루프, 데이터를 배열에 삽입 한 다음 배열에서 값을 보내십시오 (물론 루프 밖으로).

관련 문제