2017-08-06 124 views
1

我想弄清楚如何從特定的twitter列表中獲取用戶ID數組,並自動根據TwitterAPI JSON響應中的屬性next_cursor轉到下一個遊標。 docs:https://dev.twitter.com/rest/reference/get/lists/members || https://dev.twitter.com/overview/api/cursoring如何在NodeJS(npm Twitter模塊)中從Twitter api迭代遊標響應對象?

我的代碼:

var Twitter = require('twitter') 
var numFromCursor = -1; 

var client = new Twitter({ 
    consumer_key: process.env.tw_consumer_key, 
    consumer_secret: process.env.tw_consumer_secret, 
    access_token_key: process.env.tw_access_token, 
    access_token_secret: process.env.tw_access_token_secret 
}) 

var cursorIterator = (twitClient, cursorObj) => { 
    twitClient.get('https://api.twitter.com/1.1/lists/members.json', 
{list_id: '*insert twitter list_id*', cursor: cursorObj}) 
    .then((list)=>{ 
     console.log(list); 
     cursorObj = list.next_cursor 
     return list 
    }) 
    .catch((err)=>{ 
     console.log(err); 
    }) 
} 

do{   
    cursorIterator(client, numFromCursor) 
} 
while(numFromCursor != 0) 

此時代碼記錄表明PARAMS是未定義的錯誤。我看了一下Twitter npm模塊的源代碼,看不到任何會導致此錯誤發生的事情。任何幫助將大量讚賞!

+0

您是否嘗試過使用回調代替承諾? [docs](https://www.npmjs.com/package/twitter#promises)表示在使用承諾時需要滿足兩個條件。 –

+0

我切換到回調。它在do/while循環之外(承諾版本也行),但在循環內部時不起作用。 – D3v3l

回答

0

我決定手動輸入每個頁面的next_cursor ID,因爲get請求在循環外部調用時正在工作。這是一種惱人的解決方案,但它在這種情況下起作用,因爲我正在檢查的列表僅有100多個成員,並且每個遊標數組響應都顯示18個用戶對象。