2016-07-26 35 views
1

Ist es in einer Middleware möglich, die Daten nur von meiner API gesendet zu bekommen?Node.JS - Erhalten Sie Daten am Ende in einer Middleware gesendet

Für exemple ich einen NodeJS Server mit dieser Middleware haben:

var middleware = function(req, res, next) { 
     res.on('finish', function() { 
      console.log(res.statusCode); // display 200 
      console.log(res.body); // display empty data 
     }); 
     next(); 
    }; 

Und meine API:

app.get('/url', function(req, res) { 
     res.status(200).json({name:'john'}).end(); 
    }); 

Aber in meiner Middleware, kann ich nur die '200' status, aber nicht das Objekt .

Jeder kann mir helfen?

Danke.

Antwort

1

Fügen Sie die app.use(middleware); nach dem Router hinzu.

Quelle:Connect or Express middleware to modify the response.body

EDIT: Sorry, die Antwort, die ich Arbeiten für alte Versionen von Express verknüpfen. Ich habe die Express Quellcode gelesen, und Körper wird nie in res gespeichert, wenn res.json() oder res.send() aufgerufen werden.

Um den Körper in Express 4, bearbeiten Sie scheinen res Methoden außer Kraft setzen zu müssen, oder ein Paket benutzen, die es tun, wie Express-Mungo (https://www.npmjs.com/package/express-mung).

+0

Ich habe es schon getan, meine Middleware zeigt den korrekten statusCode aber nicht den Body an – Sparw

+0

Ich habe die Antwort aktualisiert. Entschuldigung für die schlechte Antwort. –

+0

Funktioniert gut! Vielen Dank :) – Sparw