这是我的路由器的JS代码,我正在使用Pug运行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;
这是我要呈现的Pug文件
p Welcome to #{title}
&#39; res.on()&#39;中的console.log完美的工作,并显示我期待的JSON包。当我在res.render()中调用这个数组时,即标题:&#39; data [0] .name&#39;它抛出一个未定义的错误。
答案 0 :(得分:0)
将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;
它没有到处填充,这不是异步代码或作用域的工作方式。