1

我試圖找到使用單個請求查詢新聞Feed和牆的最佳方法。使用單個請求查詢新聞Feed和牆的方法

第一次嘗試:

  • 查詢我的/ home和我/飼料批量請求。
  • 問題:由於圖形API錯誤(顯示阻塞的項目,相反沒有顯示某些應該顯示的項目),查詢我/ home會給我帶來不好的結果,因此我決定更改爲FQL,這似乎更好地處理它。

第二次嘗試:

  • 使用單批請求來查詢: (1)我/直接飼餵。 (2)將filter_key設置爲'others'的流表的fql.query。
  • 問題:因爲流表只包含id,所以還需要查詢用戶名。

第三次嘗試:

  • 使用批處理請求來查詢: (1)我/有filter_key設置爲 '其他' 直接供給 (2)fql.multiquery的流表和名錶與「WHERE ID IN(SELECT actor_id FROM #stream)」。
  • 問題:失敗。它返回「錯誤:批量參數必須是JSON數組」,儘管它是一個json數組。

第四次嘗試:

  • 使用fql.multiquery得到新聞提要流,牆壁流和名稱。
  • 問題:我不知道如何使用FQL獲得與我/ feed相似的視圖。我能得到的最好的是我所有帖子的列表,但它沒有顯示用戶被標記的照片(所以我猜更多的東西丟失了)。

欣賞任何提示。

+0

這將有助於理解完整的需求。你的問題表明,你想通過一個請求來獲取新聞源和牆,之後你會說你沒有得到用戶名(這不是流表的一部分)。所以我很困惑,你想要名字,還是你想要流項目? – DMCS 2012-01-30 00:43:08

+0

最後的任務是顯示每個視圖(新聞源和牆)的可閱讀項目列表。 如果您查詢我/家或我/飼料,您將獲得每個帖子的用戶名稱。 FQL查詢僅返回id,因此需要單獨的名稱查詢(僅用於在帖子上的id和名稱之間進行映射)。 – roee88 2012-01-30 18:50:58

回答

1

由於FQL沒有執行SQL風格的聯接,因此在一個查詢中從多個表中獲取信息目前是不可能的。

  1. 在流表使用FQL得到你想要顯示一定要抓住SOURCE_ID帖子列表。 source_id可以是用戶ID,頁面ID,事件ID,組ID,並且可能還有更多的對象,只是不記得我的頭頂。 (您可能還想要執行類似的緩存actor_id,target_id和viewer_id)
  2. 將source_id緩存在字典樣式數據緩存中,其中source_id是PK。
  3. 通過高速緩存循環訪問您沒有信息的地址
  4. 嘗試從用戶表中獲取基於id的信息,然後在頁面表,然後事件表和組表中查找信息,直到找到所需內容ID屬於。將信息存儲在緩存中
  5. 用於顯示將流表項與source_id信息合併在一起。
+0

非常感謝您的答覆,但fql multiquery確實允許一次從多個表中獲取信息。參考:http://developers.facebook.com/docs/reference/rest/fql.multiquery/ 我沒有問題在單個fql.multiquery中查詢流表和配置文件表。我唯一的問題是在同一個電話中獲取牆項(我/飼料)。如果有可能使用FQL來獲得牆,那麼我想知道怎麼做,否則我想知道如何在批處理請求中結合fql.multiquery和標準查詢(在批處理工作正常的情況下結合fql.query和標準查詢)。 – roee88 2012-01-30 23:10:55

+0

這不就是我說的嗎? 「*在一個查詢中從多個表獲取信息目前是不可能的。」「那麼你怎麼做?請發佈您的一個連接多個表信息的查詢。我不是在討論需要被解析後加入的獨立結果分組的mutli-query。請告訴我你的問題,我非常願意學習。 – DMCS 2012-01-30 23:16:20

+0

我從來沒有說過沒有必要進行解析(這在我的問題中從未需要),但它仍然是一個查詢流項目和相關名稱。示例: { 「stream」:「SELECT post_id,actor_id FROM stream where filter_key ='others'ORDER BY created_time DESC」, 「names」:「SELECT id,name FROM profile where where id IN(SELECT actor_id FROM #stream) 「 } – roee88 2012-02-04 18:48:52