无法访问帕格数据阵列中的元素
这是我的路由器的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'会引发一个未定义的错误。
将您res.render
进入该地区,其中data
实际上填充:
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);
res.render('map', {
title: 'data[0].id'
});
});
}).on('error', function(e){
console.log("Error: ", e);
})
});
module.exports = router;
它不填充任何地方,这不是如何异步代码或作用域的作品。
试过这个,连接现在被拒绝。来自服务器的响应现在是空的。我得到的错误信息是res.render不是函数。 –
@MichaelDepaye,这听起来像是一个单独的问题。什么是URL? – ryanpcmcquen
localhost:3000,所有的代码都在index.js路由中。 –
您在数据填充之前调用'render'。 –
你知道所有这些都是异步的吗?您在调用'res.render'时'data'将为空。 – Zeta
[我如何从异步调用返回响应?](https://*.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Rajesh