2016-09-28 52 views
0

我正在使用request軟件包對npm API進行簡單的HTTP GET請求。我試圖從我的nodeJS後端的任意函數中獲取npm包的下載計數。訪問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控制檯登錄...我如何訪問身體變量?我覺得這應該是非常簡單的,但我找不到任何文檔。

+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); 
     } 
     }) 
    } 
    }) 
}