2016-09-28 5 views
0

Я использую пакет request, чтобы сделать простой HTTP-запрос GET для API npm. Я пытаюсь получить количество загрузок для пакетов npm из произвольной функции в моем сервере nodeJS.Доступ к параметрам тела ответа GET

Вот мои updateDownloadCount.ts файл:

export function updateDownloads() { 
    plugin.find(function (err, plugins: Array<any>) { 
     for (let plugin of plugins) { 
      var url = 'https://api.npmjs.org/downloads/point/last-month/' + plugin.package; 

      request(url, function (error, response, body) { 
       if (!error && response.statusCode == 200) { 
        console.log(body) 
       } 
      }) 
     } 
    }) 
} 

Так что это нормально, и я получаю строку результатов, как:

{"downloads":17627637,"start":"2016-08-29","end":"2016-09-27","package":"request"} 

однако, когда я пытаюсь получить доступ только downloads счет, т. е.

console.log(body.downloads); 

Я получаю undefined console logged ... Как получить доступ к переменным тела? Я чувствую, что это должно быть очень просто, но я не мог найти никаких документов на нем.

+0

Вы можете попробовать 'JSON.parse (тело) .downloads'? – DrakaSAN

+0

не должно быть так. –

ответ

1

Попытка разобрать тело, если это string type

export function updateDownloads() { 
    plugin.find(function(err, plugins: Array <any>) { 
    for (let plugin of plugins) { 
     var url = 'https://api.npmjs.org/downloads/point/last-month/' + plugin.package; 

     request(url, function(error, response, body) { 
     if (!error && response.statusCode == 200) { 
      if (body && typeof body == "string") { 
      body = JSON.parse(body); 
      } 
      console.log(body.downloads); 
     } 
     }) 
    } 
    }) 
} 
Смежные вопросы