【发布时间】:2020-03-10 14:21:06
【问题描述】:
我正在尝试在 nodejs 中从 Twitter 检索 100 多条推文。但是,我不断得到一个空数组。我试过这样:
const MAX_TWEETS = 200;
const TWEETS_PER_REQUEST = 100;
async function retrieveTweets(T,parameters,tweets_data,request_num){
T.get('search/tweets', parameters, function (error, data){
let lowest_id = null;
let tweets = data.statuses;
for(var i=0;i<tweets.length; i++){
tweets_data[request_num*TWEETS_PER_REQUEST+i] = tweets[i].text;
if(!lowest_id || lowest_id>tweets[i].id){
lowest_id = tweets[i].id;
}
}
parameters.max_id = lowest_id;
});
}
async function twitter(){
var config = require('./config.js');
var Twit = require('twit');
var T = new Twit(config);
var parameters = { q: 'obama', count: TWEETS_PER_REQUEST, result_type: 'recent' };
var tweets_data= new Array(MAX_TWEETS);
await retrieveTweets(T,parameters,tweets_data,0);
await retrieveTweets(T,parameters,tweets_data,1);
console.log(tweets_data);
}
twitter();
我不知道为什么我总是得到一个空数组。任何帮助将不胜感激。
编辑:我确实从 get 请求中获得了结果,但是当我尝试将它们保存在 tweets_data 数组中时,我得到一个空数组并且结果最终没有保存。
【问题讨论】:
-
首先访问浏览器中的 URL,您是否收到任何推文?然后添加一些错误处理,看看 Twitter 实际返回什么
-
@adeneo 我确实从 Twitter API 获得了结果。当我在 get 请求中添加 console.log(tweets) 时,我得到了结果,但在 twitter() 函数中它显示一个空数组。
-
您将
tweet_sizes传递给retrieveTweets而不是tweets_data这是您想要的吗? -
@JDunken noo..这是一个错字。我修好了,谢谢。
标签: javascript node.js asynchronous twitter async-await