如何在Node JS中存储大的twitter profile ID

我需要存储less数用户的追随者的追随者。 Twitter的followers/ids给出了一个id列表,而不是id_str 。 我将api返回的整个id列表存储在一个列表中。 然后为每个ID我find追随者名单。 每当我使用大IDfind他们的追随者名单,我得到错误Error: Sorry, that page does not exist 。 我试图将ID转换成string,但仍然错误仍然存​​在。 我肯定错过了什么。 我正在使用twit( https://github.com/ttezel/twit )库。 任何帮助将不胜感激。

这里是我收集less数用户的追随者列表的脚本。

 // store in mongoDB var storeUserFollowerList = function ( screenName, followerList ) { twitter_profile.update ({ screen_name : screenName }, { follower_list : followerList } , function ( err, doc ) { if ( err ) { console.log ( err ); console.log ( ' Error while updating '); } else { console.log ( 'Successfull updation '); //console.log ( followerList ); } }); } var storeUserFollowerList = function ( screenName, followerList ) { twitter_profile.update ({ screen_name : screenName }, { follower_list : followerList } , function ( err, doc ) { if ( err ) { console.log ( err ); console.log ( ' Error while updating '); } else { console.log ( 'Successfull updation '); //console.log ( followerList ); } }); } var getUserFollowerList = function ( screenName, nextCursor, callback ) { twits.get ( 'followers/ids', { screen_name : screenName, cursor : nextCursor }, function ( err, data, response ) { //console.log (data); if ( err ) { console.log ( err + ' for ' + screenName ); } else { callback ( screenName, data['ids'] ); //console.log ( data['ids'] ) if( data["next_cursor_str"] != "0" ) { getUserFollowerList ( screenName, data["next_cursor_str"], callback ); } } }); } var getUsers = function ( callback ) { screenNames.forEach ( function ( screenName ) { /* By default, an API endpoint that supports cursoring will assume -1 was passed as cursor if you do not provide one */ callback ( screenName, "-1", storeUserFollowerList ); }); } 

这里是我如何获得追随者的追随者名单

 var getFollowerListOfFollowers = function( followerList, i ) { // if current follower is not in db then search for its follower list and update db twitter_profile.find ( { id : followerList[i] }, function ( err, dbData ) { if ( err ) { console.log ( err ); } else { if ( dbData.length > 0 ) { console.log ( ' we have this user ... ignore '); getFollowerListOfFollowers ( followerList, ++i ); } else { get_follower_list ( ' ' + followerList[i], enter_in_db ); getFollowerListOfFollowers ( followerList, ++i ); } } }); } var getFollowerOfFollowers = function () { screenNames.forEach ( function ( screenName ) { twitter_profile.find ( { screen_name : screenName }, function ( err, dbData ) { if ( err ) { console.log ( err ); } else { if ( dbData.length > 0 ) { // get follower list for each follower of this user getFollowerListOfFollowers ( dbData[0]['follower_list'], 0 ); //console.log ( dbData[0]['follower_list'] ); } else { console.log ( ' Data not found in DB '); } } }); }); } 

最后

 var enterInDB = function ( id, followerList ) { new twitter_profile ( { _id: id, id: id, follower_list: followerList }).save (function ( err, doc ) { if ( err ) { console.log ( err ); } else { console.log ( ' -----------Entered Profile into database------------- '); } }); } var getFollowerList = function ( id, callback ) { twits.get ( 'followers/ids', { id : id }, function ( err, data, response ) { //console.log (data); if ( err ) { console.log ( err + ' for ' + id ); } else { callback ( id, ""+data['ids'] ); //console.log ( data['ids'] ) } }); } 

获取730292604265435100 ID的错误

抱歉回复晚了。 我的一天很忙。

我试图通过Twitter API控制台查找这些ID,并得到了你提到的相同的结果。

在尝试了这些ID的各种API方法后(每个人都失败了),我决定在Twitter上查找个人资料。

这也失败了。 所以我寻找了一个随机的configuration文件,只有一个追随者,而在这个id范围内只有一个追随者。

我find了一个! 他有一个ID为728920217020158000的追随者。 如果你通过api查看这个id,你会看到没有结果,因为id是无效的。

我注意到,id_str字段显示了另一个ID。 如果你通过api查找id 728920217020157955 ,你会发现他的个人资料。

所以你必须告诉twit把string的ID还给你。

我现在没有安装twit所以你可以这样试试

 twits.get ( 'followers/ids', { id : id, stringify_ids : true } //console.log (data); if ( err ) { console.log ( err + ' for ' + id ); } else { callback ( id, ""+data['ids'] ); //console.log ( data['ids'] ) } }); 

有关此端点的更多信息,请访问Twitter API参考