2013-06-29 25 views
1

這是一系列我正在學習nodejs的教程。我想訪問developer.github.com上的用戶的存儲庫信息。當嘗試使用以下的一段代碼它顯示一個錯誤:如何使用nodejs從github檢索開發人員的存儲庫信息?

json.forEach(函數(回購){ ^ 類型錯誤:對象#沒有方法「的forEach」

var https=require("https"); 

var username= "OllieParsley"; 

var options={ 
    host: "api.github.com", 
    path: "https://stackoverflow.com/users/" +username+ "/repos", 
    method: "GET", 
    /*customHeaders: { "User-Agent": "app" }*/ 
}; 

var request= https.request(options, function(response){ 
    var body=''; 
    response.on("data", function(chunk){ 
     body+=chunk.toString("utf8"); 
    }); 
    response.on("end", function(){ 
     var repos=[];  
     var json=JSON.parse(body); 
     json.forEach(function(repo){ 
      repos.push({ 
       name:repo.name, 
       description:repo.descripton   
      }); 

     });  
     console.log("Repos: ", repos); 
    }); 
}); 
request.end(); 

任何指針爲什麼錯誤說對象沒有方法「的forEach」?

+1

如果'json'是一個對象,而不是一個數組,然後它做我沒有'forEach'方法。具體取決於API返回的內容。還要確保'body'實際上包含有效的JSON。做'console.log(body)'和'console.log(json)'看看它們的值是什麼。 –

+0

現在,api的配置有所不同。謝謝! –

+0

@AnishShah你是如何解決這個問題的,你是如何設定這條路線的。我遇到了同樣的問題。 –

回答

0

使用Object.keys(json).forEach(...)代替。顯然做var repo = json[key];forEach塊內。

+0

做var repo = json [key];的目的是什麼?當我傳遞的參數是repo時,在forEach塊內部? –

+0

因爲您正在迭代我的解決方案中的密鑰 –

相關問題