這是我的路由器的JS代碼,我正在使用帕格運行Node Express服務器。無法訪問帕格數據陣列中的元素
var express = require('express');
var router = express.Router();
var https = require('https');
/* GET home page. */
router.get('/', function(req, res, next) {
var url = 'https://data.police.uk/api/forces';
var data = [];
https.get(url, function(res){
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var response = JSON.parse(body)
for (var i = 0; i< response.length; i++)
for (var id in response[i]) {
data[i] = response[i]
}
console.log(data[0].id);
});
}).on('error', function(e){
console.log("Error: ", e);
})
res.render('map', {
title: 'data[0].id'
});
});
module.exports = router;
這是「)res.on(」我的帕格文件被渲染
p Welcome to #{title}
中的執行console.log工作完全正常,並顯示JSON包我所期待的。當我在res.render()中調用這個數組時,例如title:'data [0] .name'會引發一個未定義的錯誤。
您在數據填充之前調用'render'。 –
你知道所有這些都是異步的嗎?您在調用'res.render'時'data'將爲空。 – Zeta
[我如何從異步調用返回響應?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Rajesh