如何使用用户表的设备领​​域FQL查询?(How to use devices field of t

2019-07-30 15:22发布

我想一个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", 
    }
}

现在,我想只能检索谁拥有至少一个件,其中,操作系统是“iOS版”的用户。 我曾尝试包括

devices.os = "iOS"

在查询但这返回一个错误。

这是可能通过FQL查询? 或者,这应该可以解决客户端?

Answer 1:

刚刚发现,它可能的! 您可以使用IN操作符刚刚与devices列。 有没有必要限制到操作系统或硬件。

例如:有一个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

提示:如果你想使用这个查询来建立一个自定义好友选取器来发送邀请Facebook的朋友是尚未安装iOS应用,但有一个iOS设备,要包括以下内容到你的WHERE子句:

AND is_app_user = 0


Answer 2:

这似乎并不可能在服务器端。 该devices领域会返回一个数组,FQL似乎不具有可搜索的数组的任何方法。 据我所知,去探索这个问题的唯一办法是在客户端。



文章来源: How to use devices field of the user table in FQL query?