无法访问Pug数据数组中的元素

时间:2017-09-14 05:47:51

标签: javascript http express get pug

这是我的路由器的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;它抛出一个未定义的错误。

1 个答案:

答案 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;

它没有到处填充,这不是异步代码或作用域的工作方式。