2017-06-22 5 views
0

Ich bin neu zu beiden Knoten und Express, so dass ich denke, ich mache etwas Dummes. obwohlnode express.js Header können nach dem Senden nicht gesetzt werden. '

https://github.com/wa1gon/aclogGate/tree/master/server

logRouter.get("/loggate/v1/listall", function(req, res) { 
    let countStr = req.param('count'); 
    let count: number; 

    if (!countStr) { 
     count = null; 
    } else { 
     count = Number.parseInt(countStr); 
     if (count == NaN) count = null; 
    } 

    acConn.listAllDatabase(count, (err: string, result: Array<LogGateResp>) => { 
     console.log("got list all data resp") 
     return res.json(result).end(); 
    }); 


    } 

    ); 
    app.use('/', logRouter); 

Es funktioniert das erste Mal, aber die zweite sprengt:

Der komplette Quellcode finden Sie unter.

listallDatabase verbindet sich mit einem Netzwerk-Socket, der die XML-Datenbank zurückerhält, analysiert und mit einem JS-Objekt aufruft. Das wiederum ruft res.json auf.

Vorschläge?

+3

Entfernen Sie '.end()' nach Ihrem Aufruf der 'json'-Funktion. – noahnu

Antwort

0

Entfernen Sie das Ende() nach res.json().

res.josn() senden Sie die Antwort an Frontend und Ende() versuchen, die Antwort erneut zu senden. Warum erhalten Sie den Fehler. Weil node.js dem API nicht erlaubt, die Antwort zweimal zu senden. Verwenden Sie entweder res.end() oder res.json().

+0

Ich entfernte den Aufruf .end(), aber es half nicht. –

+0

Welcher Fehler Sie jetzt bekommen ... –

+0

Das Problem scheint in [Link] zu sein (https://github.com/wa1gon/aclogGate/blob/master/server/aclogApi/AclogConn.ts) Ich rufe logRouter. get ('/ loggate/va/listall von einem net.socket.on Callback. Wenn ich den Callback zurück bekomme funktioniert es. –

Verwandte Themen