1

FQL クエリの結果が、デバイス リストに iOS デバイスを持っているユーザーの友人のみを返すようにしたいと考えています。次のクエリ:

SELECT uid, first_name, devices 
FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
ORDER BY profile_update_time DESC 
LIMIT 0, 100

次のようなリストを返します。

{
  "data": [
    {
      "uid": 12345678, 
      "first_name": "John", 
      "devices": [
        {
          "os": "iOS", 
          "hardware": "iPhone"
        }
      ]
    },
    {
      "uid": 1234345678, 
      "first_name": "Pete", 
    }
}

ここで、OS が「iOS」であるデバイスを少なくとも 1 つ持っているユーザーのみを取得したいと思います。含めてみました

devices.os = "iOS"

クエリで、これはエラーを返しました。

これは FQL クエリで可能ですか? または、これはクライアント側で解決する必要がありますか?

4

2 に答える 2

7

それが可能であることがわかりましIN演算子は列だけで使用できdevicesます。OSやハードウェアに限定する必要はありません。

例:iPhoneを持っているすべての友達: 試してみる

SELECT uid, name, devices FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
  AND "iPhone" IN devices
ORDER BY profile_update_time DESC 
LIMIT 0, 100

例:iOSデバイス(iPhoneやiPadなど)を持っているすべての友達: 試してみる

SELECT uid, name, devices FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
  AND "iOS" IN devices
ORDER BY profile_update_time DESC 
LIMIT 0, 100

ヒント:このクエリを使用してカスタムフレンドピッカーを作成し、iOSアプリをまだインストールしていないがiOSデバイスを持っているFacebookフレンドに招待状を送信する場合は、次の項目をWHERE句に含める必要があります。

AND is_app_user = 0
于 2012-09-06T12:24:23.470 に答える
0

これはサーバー側ではできないようです。フィールドは配列として返され、devicesFQL には配列を検索できるメソッドがないようです。私が知る限り、これを調査する唯一の方法はクライアント側にあります。

于 2012-07-30T14:26:04.427 に答える