【问题标题】:Facebook FQL query returns no results for language fieldFacebook FQL 查询未返回语言字段的结果
【发布时间】:2014-04-08 04:25:27
【问题描述】:

如果存在指定语言 ID 或名称的子句,Facebook FQL 查询不会返回语言字段的结果。如果语言没有 WHERE 子句,则返回所有字段。

SELECT uid,name,languages.name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND (strpos(lower(languages.name), lower("English")) >= 0)

示例见以下链接:

https://developers.facebook.com/tools/explorer?fql=SELECT%20uid%2Cname%2Clanguages.name%20FROM%20user%20WHERE%20uid%20IN%20(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20%3D%20me())%20AND%20(strpos(lower(languages.name)%2C%20lower(%22English%22))%20%3E%3D%200)%20

我对其他字段或 FQL 查询没有任何问题。为授权令牌请求所有权限。

【问题讨论】:

  • 你是什么意思if it is filtered
  • AND (strpos(lower(languages.name), lower("English")) >= 0) 表示只返回结果 WHERE 语言等于“English”。

标签: facebook facebook-fql


【解决方案1】:

显然,您不能对包含数组的字段进行“过滤”,对包含对象的字段进行过滤就像您所勾画的那样。我认为 Facbook API 文档中没有记录这一点。

也可以在这里查看我的回答:FQL Query for facebook

【讨论】:

  • 我会接受 FQL 查询无法做到这一点,并改用 Graph API。谢谢。
  • 好的,但是如何通过 Graph API 进行过滤?
  • 解析响应对象数据。使用嵌套的 for 循环为您请求的每个字段(教育、语言和工作)创建一个平面对象:languageName.push(friends[i].languages[j].name); createFlatObject(languages, languageName, friends[i].id);
  • 是的,但那是在您的应用程序中进行过滤,而不是在 Graph API 本身中进行过滤......但它的工作原理很棒!
猜你喜欢
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多