首页 > 解决方案 > 在函数之外获取推文 ID 数组

问题描述

我正在使用这个很棒的教程来编写一个 twitter 机器人:https ://shiffman.net/a2z/twitter-bots/

我正在尝试获取我的机器人已回复的推文 ID 的数组。我可以使用下面的代码让数组显示在控制台中。

var params = {
        q:'from:MYACCOUNT',
        result_type:'recent'
        }

T.get('search/tweets', params, gotData); 


function gotData(err, data, response) {
    var tweets = data.statuses;
    var arr = []
    for (var i = 0; i < tweets.length; i++) {
        arr.push(tweets[i].in_reply_to_status_id_str);
        };

        console.log(arr);
    };

我开始挣扎的地方是使该数组在函数之外可用。我尝试了以下方法:

function gotData(err, data, response) {
    var tweets = data.statuses;
    var arr = []
    for (var i = 0; i < tweets.length; i++) {
        arr.push(tweets[i].in_reply_to_status_id_str);
        };

        return arr;
    };
    
var y = gotData();

console.log(y);

错误输出如下:

/home/ubuntu/testbot.js:28
        var tweets = data.statuses;
                          ^

TypeError: Cannot read property 'statuses' of undefined
    at gotData (/home/ubuntu/testbot.js:28:20)
    at Object.<anonymous> (/home/ubuntu/testbot.js:37:9)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

这是我第一次尝试这样的事情,所以任何建议都将不胜感激。

标签: javascriptnode.jstwitter

解决方案


您正在调用gotData(),但您没有向其传递所需的参数(错误、数据、响应)

您可以尝试将其更改为以下内容:

function gotData(data) {
    var tweets = data.statuses;
    var arr = []
    for (var i = 0; i < tweets.length; i++) {
        arr.push(tweets[i].in_reply_to_status_id_str);
        };

        return arr;
    };
    
var y = gotData({
    statuses: [
    {
     in_reply_to_status_id_str: '0'
    },
    {
     in_reply_to_status_id_str: '1'
    },
    {
     in_reply_to_status_id_str: '2'
    },
  ]
});

console.log(y);

推荐阅读