597 Stimmen

Richtiger Weg, JSON mithilfe von Node oder Express zurückzugeben

Also kann man versuchen, das folgende JSON-Objekt abzurufen:

$ curl -i -X GET http://echo.jsontest.com/key/value/anotherKey/anotherValue
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=ISO-8859-1
Date: Wed, 30 Oct 2013 22:19:10 GMT
Server: Google Frontend
Cache-Control: private
Alternate-Protocol: 80:quic,80:quic
Transfer-Encoding: chunked

{
   "anotherKey": "anotherValue",
   "key": "value"
}
$

Gibt es eine Möglichkeit, genau den gleichen Body in einer Antwort von einem Server mithilfe von node oder express zu erzeugen? Offensichtlich kann man die Header setzen und angeben, dass der Content-Type der Antwort "application/json" sein wird, aber dann gibt es unterschiedliche Möglichkeiten, das Objekt zu schreiben/senden. Die häufig verwendete Methode, die ich gesehen habe, ist die Verwendung eines Befehls der Form:

response.write(JSON.stringify(anObject));

Allerdings gibt es zwei Punkte, bei denen man argumentieren könnte, dass es "Probleme" gibt:

  • Wir senden einen String.
  • Außerdem gibt es kein Zeilenumbruchszeichen am Ende.

Eine andere Idee ist die Verwendung des Befehls:

response.send(anObject);

Dies scheint ein JSON-Objekt zu senden, basierend auf der Ausgabe von curl ähnlich wie im ersten Beispiel oben. Allerdings gibt es kein Zeilenumbruchszeichen am Ende des Bodens, wenn curl erneut in einem Terminal verwendet wird. Wie also kann man tatsächlich etwas ähnliches mit einem Zeilenumbruchszeichen am Ende mit node oder node/express schreiben?

-1voto

ABHI SHEK Punkte 85

Hier ist die Lösung:

//Hier ist das JSON-Objekt doc  
const M={"Vorname":doc.Vorname,
          "Nachname":doc.Nachname,
          "E-Mail des Arztes":doc.Email,
          "Link zum Bild des Arztes":doc.Bild};
   res.write(JSON.stringify(M,null,10)+"\n");
   res.end();

Weitere Möglichkeiten, das Objekt nur anzuzeigen

console.log(doc);
res.json(doc);
//Hier wird M aus dem obigen Code verwendet, es enthält das doc-Objekt
res.send(M);

Wie ich das Objekt mit Mongoose erhalte:

//Hier enthält Handles mein MongoDB-Schema.
const NN=Handles.findOne().lean().exec(function(err, doc) {
console.log(doc);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X