【发布时间】:2017-02-02 07:09:22
【问题描述】:
第一个 Node/Express 应用程序。
我很难思考如何从端点检索数据并将其呈现在浏览器中。
我有一个 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 中可用,但是浏览器窗口挂起并且 @ 987654325@ 部分永远无法到达。
我知道只有在端点数据请求完成后才应该进行渲染(async.series 用法),但我似乎对如何实际使用 main 中的 getFinhockeyData 函数的结果数据缺乏基本的了解路线。
对此有何建议?如有必要,我很乐意提供更多信息。
【问题讨论】:
标签: javascript node.js express routing html-rendering