Javascript FQL:通过“created_time”过滤,在几次调用(大多数为1)之后,不返回任何结果

时间:2012-03-07 12:38:39

标签: javascript facebook video facebook-fql fql.multiquery

我使用javascript api:

运行以下FQL查询
FB.api({
    method: 'fql.multiquery',
    queries: {
        'query1': 'SELECT source_id, actor_id, target_id, message, attachment, permalink, description, type, created_time FROM stream WHERE source_id IN (SELECT target_id FROM connection WHERE source_id=me() AND is_following=1) AND is_hidden = 0 AND type = 80 AND strpos(attachment.href, "youtu") >= 0 AND created_time < ' + unix_time,
        'query2': 'SELECT uid, name, profile_url, pic_square FROM user WHERE uid IN (SELECT actor_id FROM #query1)'
    }
}, 
function(response) { 
    console.log(response); 
};

它应该返回当前用户Feed上的所有YouTube视频并允许重复查询,通过提供unix_time(首次运行时,这基本上是NOW(),否则它是最早的状态时间);它做了什么,越野车:

  • 未设置LIMIT(在query1上):在~3次查询后,返回空结果
  • LIMIT 100或更多(在query1上):返回结果,但后续结果为空
  • created_time < NOW()时,返回结果(在多个查询中);否则问题仍然存在(created_time <最早收到状态的时间)

不会返回任何错误。我有* read_stream *权限。我试图找到一个相关的bug,但发现只有FQL没有返回所有状态。

1 个答案:

答案 0 :(得分:2)

API结果充其量只是参差不齐。基于我在Facebook API上的四年以上经验,我已经就如何发生这个问题得出了自己的结论。这是我的要点:

  • 数据缓存不当导致过时缓存,缓存未命中等等。
  • 群集中的不同网络服务器与其他网络服务器不同步
  • 群集中的不同数据库服务器无法跟上同步
  • 获取结果的算法无疑是每个博客“不可靠”:http://developers.facebook.com/blog/post/478/您要求10并且由于预过滤错误而返回7。

我建议缓存来自API的数据,并保持联合来自Facebook的新数据,以便您的UI可以呈现更一致的数据。