【问题标题】:How do I iterate over cursor response objects from the Twitter api in NodeJS (npm Twitter module)?如何从 NodeJS(npm Twitter 模块)中的 Twitter api 迭代光标响应对象?
【发布时间】:2017-08-06 18:06:19
【问题描述】:

我试图弄清楚如何从特定的 Twitter 列表中获取一组用户 ID,并根据 TwitterAPI JSON 响应中的属性自动转到下一个光标,即 next_cursor。文档:https://dev.twitter.com/rest/reference/get/lists/members || https://dev.twitter.com/overview/api/cursoring

我的代码:

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)

此时代码正在记录一个错误,表明参数未定义。我查看了 Twitter npm 模块源代码,我看不到任何会导致此错误发生的内容。任何帮助将不胜感激!

【问题讨论】:

  • 您是否尝试过使用回调而不是承诺? docs 表示使用 Promise 时需要满足两个条件。
  • 我切换到回调。它在 do/while 循环之外有效(promise 版本也有效),但在循环内部无效。

标签: node.js twitter pagination cursor


【解决方案1】:

我决定手动输入每个页面的 next_cursor ID,因为从循环外部调用获取请求时有效。这是一种令人讨厌的解决方案,但它适用于这种情况,因为我正在检查的列表只有 100 多个成员,并且每个光标数组响应显示 18 个用户对象。

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2016-07-26
    • 2017-02-10
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多