첫 번째 노드/익스프레스 응용 프로그램.Express 라우터에서 GET 요청의 결과 사용
엔드 포인트에서 데이터를 검색하고 브라우저에서 렌더링하는 방법에 대해 고민하고 있습니다. 지금까지
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 할 수 있으며, 그 내용은 사용할 수 :
getFinhockeyData
이라고합니다 콘솔 및 데이터 객체의 내용에서 볼 수
'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;
에서 사용할 수 있습니다 :
router.js은 다음과 같이 현재 보이는 dataservice.js의 console.logs가 표시되지만 브라우저 창이 중지되고 res.render
부분에 절대로 도달하지 않습니다.
끝점 데이터 요청이 끝난 후에 만 렌더링을 수행해야한다는 것을 알고 있지만 (async.series 사용법), getFinhockeyData 함수의 결과 데이터를 실제로 사용하는 방법에 대한 기본적인 이해가 부족한 것처럼 보입니다. 주요 경로.
이것에 대한 조언이 있으십니까? 필요한 경우 더 많은 정보를 제공해 드리겠습니다.
이것은 작동하는 것 같습니다. 고마워요! 이제 Pug 템플릿으로 씨름 해 보겠습니다. –