2017-02-20 4 views
0

Ich versuche eine https.request zu einem API-Server zu machen. Ich kann den Chunk (JSON) empfangen und in der Konsole ausdrucken. Wie kann ich es direkt in HTML schreiben und im Browser anzeigen?JSON Anfrage in body html

var requestListener = function (req, res) { 

    var db = admin.database(); 
    var ref = db.ref("Clubs"); 
    ref.on("value", function(snapshot) { 

    console.log(snapshot.val());  //print on console 

     res.write(snapshot.val()); // in body html, error  throw er;        
     // Unhandled 'error' event ^Error: write after end 

    }, function (errorObject) {   
     console.log("The read failed: " + errorObject.code); 

    }); 

// CRUD 

    ref.child("club1").set({ 
     clubId: 1, 
     clubName: "club1", 
     telephone: "6548798", 
     address: "Lviv", 
     party: "qwe,asd,zxc" 
    }); 

    ref.child("club2").set({ 
     clubId: 2, 
     clubName: "club2", 
     telephone: "234234", 
     address: "Kiev", 
     party: "qwe,zxc" 
    });  
    res.end(); 
}; 

var server = http.createServer(requestListener); 
server.listen(8080); 
+0

Sie müssen den JSON stringieren –

Antwort

0

Sie rufen res.end() am Ende des requestListener. Aber es wird direkt nach dem Definieren des Datenbanklesehandlers aufgerufen. Wenn Ihre Datenbank zum ersten Mal das Ereignis 'value' auslöst, ist es zu spät, Daten über die HTTP-Antwort zu senden.

Um das Problem zu beheben, müssen Sie res.end(); an den Punkt verschieben, an dem die Datenbank die Daten ablegt. Es sollte ein close oder end Ereignis sein, abhängig von dem db/adapter, den Sie verwenden. Wenn nicht, dann wäre der richtige Ort direkt nach der .write(), wenn garantiert ist, dass es sich um ein einmaliges "Wert" -Ereignis handelt.