2017-08-23 3 views
1

kann mir jemand helfen, meinen Code zu lösen. Ich möchte Daten innerhalb von Looping von Nodejs API senden, nachdem ich es senden, Fehlermeldung erscheint "kann Header nicht festlegen, nachdem sie gesendet werden".Kann Header nicht festlegen, nachdem sie gesendet werden - Inside Looping

..und das ist mein Code:

for (var i =0;i<req.body.stuff.length;i++){ 
var arrStuff = req.body.stuff[i]; 
var getUrl = 'https://someurl/' + arrStuff 

request.get(getUrl, 
    function(error,response,body) { 
     if (!error && response.statusCode == 200){ 

     rowData = JSON.parse(body) 

     res.send(rowData) // send data to client 

     }; // if (!error) 

    } // function(error,response,body) 
); // request.get(getUrl 

..finally bekam Fehlermeldung wie oben Titel, weil res.send (innen Looping) zweimal hat senden, und ich nicht den besten Weg, weiß es zu lösen .

Vielen Dank im Voraus

Antwort

0

Mein Verständnis ist jemand anruft Ihre API, dann möchten Sie mehrere APIs in Schleifen anrufen, und Sie diese Daten zu Ihrem API des Anrufers senden.

Sie können nicht res.send mehrmals. Sobald dies ausgeführt wurde, ist der API-Aufruf beendet. Sie haben die Antwort bereits gesendet.

Der einfachste Weg, um zu erreichen, was Sie wollen, ist die Antworten, die Sie in einem externen Array in der Schleife erhalten zu speichern, dann einmal alle Anrufe sind das Array in res.json oder res.send

Gebrauch gemacht, senden async.js zu Handle die Schleife. Mit async.concat müssen Sie das äußere Array nicht selbst pflegen.

Es gibt andere Möglichkeiten wie socket.io oder so etwas wie ein Stream, aber das ist, was Sie brauchen.

+0

ho ho..thanks so viel Dushyant Bangal, es funktioniert jetzt, wirklich sehr hilfreich. Danke .. – Onyot

+0

Gern geschehen. Bitte kreuzen Sie das Häkchen auf der linken Seite meiner Antwort an, um es als Antwort zu markieren, könnte jemand anderem auch helfen –

0

Sie können nicht mehrere Antworten für eine einzelne Anfrage senden. HTTP folgt Anfrage-Antwort-Muster Einzelantwort für eine einzelne Anfrage.

Fehler: nicht Header gesetzt, nachdem sie gesendet werden, bedeutet, dass Sie bereits im Körper sind oder Finished Zustand, aber einige Funktion versucht, eine Header oder status einzustellen. ideal in Ihrem Fall ist die Schleife

+0

okay danke die Unterordnung @ Bharatva Ganesan – Onyot

Verwandte Themen