1

単一のリクエストを使用して、ニュース フィードとウォールの両方をクエリする最良の方法を見つけようとしています。

最初の試み:

  • バッチ リクエストで me/home と me/feed をクエリします。
  • 問題: me/home を照会すると、Graph API のバグ (ブロックされたアイテムが表示され、逆に表示されるべきアイテムが表示されない) により悪い結果が得られるため、より適切に処理できると思われる FQL に変更することにしました。

2 回目の試行:

  • 単一のバッチ リクエストを使用して、(1) me/feed を直接クエリします。(2) filter_key を「others」に設定したストリーム テーブルの fql.query。
  • 問題: ストリーム テーブルには ID しか含まれていないため、ユーザー名も照会する必要があります。

3 回目の試行:

  • バッチ リクエストを使用してクエリを実行します: (1) me/feed direct (2) fql.multiquery for stream table with filter_key set to 'others' and names table with "WHERE id IN (SELECT actor_id FROM #stream)".
  • 問題: 失敗します。json配列なのに「エラー:バッチパラメータはJSON配列でなければなりません」を返します。

4 回目の試行:

  • fql.multiquery を使用して、ニュース フィード ストリーム、ウォール ストリーム、および名前を取得します。
  • 問題: FQL を使用して me/feed に似たビューを取得する方法がわかりません。私が取得できる最善の方法は、自分のすべての投稿のリストですが、ユーザーがタグ付けされている写真は表示されません (したがって、もっと多くのものが欠けていると思います)。

ヒントをいただければ幸いです。

4

1 に答える 1

1

FQL は SQL スタイルの結合を行わないため、1 つのクエリで複数のテーブルから情報を取得することは現在不可能です。

  1. ストリーム テーブルで FQL を使用して、表示する投稿のリストを取得し、必ず source_id を取得してください。source_id には、ユーザー ID、ページ ID、イベント ID、グループ ID を指定できます。さらに多くのオブジェクトが存在する場合もありますが、覚えていないだけです。(actor_id、target_id、viewer_id の同様のキャッシングを行うこともできます)
  2. source_id が PK であるディクショナリ スタイルのデータ キャッシュに source_id をキャッシュします。
  3. 情報を持っていないもののキャッシュをループします
  4. ID に基づいてユーザー テーブルから情報を取得し、次にページ テーブル、イベント テーブル、グループ テーブルの順に、その ID が属するものを見つけます。キャッシュに情報を保存する
  5. 表示するには、ストリーム テーブル アイテムを source_id 情報とマージします。
于 2012-01-30T19:01:53.767 に答える