First Node/Express-App.Verwenden der Ergebnisse einer GET-Anforderung im Express-Router
Ich habe mich schwer damit beschäftigt, Daten von einem Endpunkt abzurufen und im Browser zu rendern.
Ich habe einen dataservice.js, die ein JSON-Objekt von einem Endpunkt wie folgt erhält:
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;
Bisher Dinge funktionieren und das data
Objekt kann Inhalt ist verwendbar console.logged und sein wird.
Die router.js sieht derzeit wie folgt aus:
'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;
Wenn ich die app und aktualisieren Sie die/Route laufen, ich von der Konsole sehen, dass die getFinhockeyData
genannt wird und der Inhalt des Datenobjekts ist in dataservice.js console.logs, aber das Browserfenster hängt und der res.render
Teil wird nie erreicht.
Ich verstehe, dass das Rendering erst nach dem Endpunkt Datenanforderung beendet werden sollte (async.series Nutzung), aber es scheint, dass ich ein grundlegendes Verständnis, wie die Ergebnisdaten aus der getFinhockeyData Funktion in der tatsächlichen verwenden Hauptroute.
Irgendwelche Ratschläge dazu? Ich werde Ihnen gerne weitere Informationen zur Verfügung stellen.
Dies scheint zu funktionieren. Danke vielmals! Ich werde jetzt mit Mops-Vorlagen ringen. –