使用express获取,存储和使用JSON变量

时间:2017-09-17 22:55:47

标签: javascript json node.js express ecmascript-6

我一直在努力了解如何使用HTTP方法路由访问和处理数据(get,put,post ...)。到目前为止,我已经能够获取JSON数据并将其存储在全局变量中。

var pokedata;

fetch('https://raw.githubusercontent.com/Biuni/PokemonGO-Pokedex/master/pokedex.json')
    .then(function (res) {
        return res.json();
    }).then(function (json) {
        pokedata = json;
    }).catch(function () {
        console.log("It was not possible to fetch the data.")
});

我想将响应HTTP GET发送到http://localhost:3000/pokemon/XXX/,其中包含有关该神奇宝贝编号XXX(在JSON中称为pokedata)的一些数据。但是,任何尝试循环遍历GET内的数据都会触发错误:

    app.get('/pokemon/:pokemonid', function (req, res) {
        //not the desired behaviour but a sample of what doesn't work.
        for (let {name: n, weight: w, height: h} of pokedata) {
            res.send(n, w, h); 
        }
    });

    TypeError: pokedata[Symbol.iterator] is not a function

似乎无法在快递文档中找到任何相关内容。任何帮助都很受欢迎。

1 个答案:

答案 0 :(得分:3)

pokedata是一个对象,你不想迭代它。相反,你想迭代pokedata.pokemon,这是一个口袋妖怪的数组。因此,只需对代码进行一些小修改即可:

for (let {name: n, weight: w, height: h} of pokedata.pokemon) {
    res.send(n, w, h); 
}