【发布时间】:2016-04-11 06:29:20
【问题描述】:
我正在尝试向 API 发送单个 https 请求,其中包含大量 JSON 格式的数据。
但是,在运行代码时,我首先遇到了一切未定义的问题。我注释掉了我的循环,试图解析我需要的数据,现在我只是试图 console.log 所有的数据。
但是,尽管我的代码中不再有循环,但它似乎仍在以某种方式循环。
这是我的请求的代码:
function getCards() {
// make a request
var options = {
host: 'omgvamp-hearthstone-v1.p.mashape.com',
path: '/cards',
method: 'GET',
};
var req = https.request(options, function(res) {
console.log('STATUS ' + res.statusCode);
console.log('HEADERS ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function(data) {
//console.log(data);
updateCardsCollection(JSON.stringify(data));
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
}
奇怪的是,上面代码中的console.log(data),把所有的数据都注销了就好了。
function updateCardsCollection(data) {
var cardsRaw = [];
console.log("DATA");
console.log("===========================================================");
console.log(data.Classic);
}
这里的“经典”是 API 中的对象数组之一。
在实现node、express、mongoose和jade之前。以下循环可以很好地解析数据:
for(var key in data) {
for(var i = 0; i < data[key].length; i++) {
console.log(data[key][i].cardId);
但是,上述循环的开头也会打印出未定义的错误。
我似乎在使用此代码时遇到的另一个奇怪问题是,当我在循环注释掉的情况下运行它时,'updateCardsCollection' 函数中只有 3 个 console.logs。它记录了这 3 行很多次。尽管该函数只被调用一次。
知道为什么这段代码不再适用于获取我的 API 数据吗?
【问题讨论】:
标签: javascript json node.js httprequest