无法访问帕格数据阵列中的元素

问题描述:

这是我的路由器的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'会引发一个未定义的错误。

+0

您在数据填充之前调用'render'。 –

+0

你知道所有这些都是异步的吗?您在调用'res.render'时'data'将为空。 – Zeta

+1

[我如何从异步调用返回响应?](https://*.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Rajesh

将您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; 

它不填充任何地方,这不是如何异步代码或作用域的作品。

+0

试过这个,连接现在被拒绝。来自服务器的响应现在是空的。我得到的错误信息是res.render不是函数。 –

+0

@MichaelDepaye,这听起来像是一个单独的问题。什么是URL? – ryanpcmcquen

+0

localhost:3000,所有的代码都在index.js路由中。 –