2013-06-29 2 views
1

Это следует из серии учебников, которые я сейчас делаю, чтобы изучить nodejs. Я хочу получить доступ к информации о репозиториях пользователей на сайте developer.github.com. Когда я пытаюсь использовать следующий фрагмент кода он показывает ошибку:Как получить информацию репозитория разработчика из github с помощью nodejs?

json.forEach (функция (репо) { ^ TypeError: Объект # не имеет метод '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' является объектом, а не массив, то это сделать es не имеют метода 'forEach'. Что точно зависит от того, что возвращает API. Также убедитесь, что 'body' на самом деле содержит действительный JSON. Сделайте 'console.log (body)' и 'console.log (json)' и посмотрите, каковы их значения. –

+0

ya api настроен по-другому. Благодаря! –

+0

@AnishShah, как вы это исправили, как вы установили этот путь. У меня была такая же проблема. –

ответ

0

использовать Object.keys(json).forEach(...) вместо этого. Очевидно, что делать var repo = json[key]; внутри forEach блока.

+0

Какова цель выполнения var repo = json [key]; внутри блока forEach, когда аргумент, который я передаю, является репо? –

+0

заставляют вас повторять ключи в моем решении –