我正在尝试向API服务器发出https.request。我可以收到块(JSON)并在控制台中打印它。如何将其直接写入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 :(得分:0)
您在res.end()
结尾处呼叫requestListener
。但它在“定义”数据库读取处理程序之后调用。因此,当您的数据库第一次触发'value'事件时,在HTTP响应上发送数据为时已晚。
要修复它,您需要将res.end();
移动到数据库完成推送其数据的位置。应该有close
或end
事件,具体取决于您使用的db / adapter。如果没有,那么正确的位置将在.write()
之后,如果这保证是一次性的'值'事件。