1

我正在尝试找到使用单个请求查询新闻提要和墙的最佳方法。

第一次尝试:

  • 批量查询 me/home 和 me/feed 请求。
  • 问题:由于 Graph API 错误(显示被阻止的项目,相反没有显示一些应该显示的项目),查询 me/home 给了我不好的结果,所以我决定更改为 FQL,它似乎可以更好地处理它。

第二次尝试:

  • 使用单批请求查询:(1)直接me/feed。(2) fql.query 用于过滤键设置为“其他”的流表。
  • 问题:还需要查询用户名,因为流表只包含 id。

第三次尝试:

  • 使用批处理请求进行查询:(1) me/feed 直接 (2) fql.multiquery 用于流表,filter_key 设置为“其他”,名称表为“WHERE id IN (SELECT actor_id FROM #stream)”。
  • 问题:失败。它返回“错误:批处理参数必须是 JSON 数组”,尽管它是一个 json 数组。

第四次尝试:

  • 使用 fql.multiquery 获取新闻源流、墙流和名称。
  • 问题:我不知道如何使用 FQL 获得与我/feed 相似的视图。我能得到的最好的结果是我自己的所有帖子的列表,但它没有显示用户被标记的照片(所以我猜更多的东西丢失了)。

感谢任何提示。

4

1 回答 1

1

由于 FQL 不进行 SQL 风格的连接,目前不可能在一个查询中从多个表中获取信息。

  1. 在流表上使用 FQL 来获取要显示的帖子列表,请务必获取 source_id。source_id 可以是用户 id、页面 id、事件 id、组 id,并且可能还有更多对象,只是不记得了。(您可能还想对 actor_id、target_id 和 viewer_id 进行类似的缓存)
  2. 将 source_ids 缓存在字典样式数据缓存中,其中 source_id 是 PK。
  3. 遍历缓存以查找您没有相关信息的内容
  4. 尝试根据 id 从用户表中获取信息,然后是页表、事件表和组表,直到找到该 ID 所属的信息。将信息存储在缓存中
  5. 为了显示将流表项与 source_id 信息合并在一起。
于 2012-01-30T19:01:53.767 回答