First Node/Express app。在Express路由器中使用GET請求的結果
我不知道如何從端點檢索數據並將其呈現在瀏覽器中,這讓我頭疼不已。
我有一個dataservice.js從一個端點得到一個JSON對象是這樣的:
const http = require('http');
getFinhockeyData = function() {
http.get('http://tilastopalvelu.fi/ih/modules/mod_standings/helper/standings.php?statgroupid=3545', (res) => {
console.log(`Got response: ${res.statusCode}`);
var body = "";
res.on('data', function (chunk) {
body += chunk;
})
res.on('end', function() {
var data = JSON.parse(body);
console.log('data parsed.');
console.log('first team name: ' + data.teams[0].TeamName);
console.log(typeof data);
return data;
})
}).on('error', (e) => {
console.log(`Got error from Finhockey: ${e.message}`);
});
}
module.exports.getFinhockeyData = getFinhockeyData;
到現在爲止事情的工作和data
對象可以console.logged,其內容是可用的。
的router.js目前看起來是這樣的:
'use strict';
const express = require('express');
const async = require('async');
const router = express.Router();
const dataservice = require('./dataservice.js')
router.get('/', function(req, res) {
async.series([
function(callback) {
getFinhockeyData(callback)
}
],
function(err, results) {
console.log('start rendering');
res.render('index', { data: data });
})
});
module.exports = router;
當我運行應用程序並刷新/條路,我可以從該getFinhockeyData
被稱爲控制檯和數據對象的內容看到的是可用dataservice.js的console.logs,但瀏覽器窗口掛起,並且永遠不會到達零件。
我知道只有在端點數據請求完成後才能完成渲染(async.series的使用),但似乎我缺乏對如何實際使用getFinhockeyData函數中的結果數據的基本理解。主要路線。
對此有何建議?如有需要,我很樂意提供更多信息。
這似乎工作。非常感謝!我現在將繼續與帕格模板搏鬥。 –