我在Graph Explorer上尝试这个简单的查询
SELECT eid FROM event_member
WHERE (uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
OR uid = me())
并返回“错误:请求失败。”
然后,我开始阅读这里和一些论坛,它与限制有关,所以我尝试将我的朋友列表限制为20,并且它有效。
这是限制?和哪里(查询,或给出的结果)?据我所知,文档中没有任何内容。
修改
如果我按mutual_friend_count
命令我的所有朋友,然后限制200,该怎么办?我还添加了start_time>now()
。这不是找到最亲密朋友的最佳方式,但它不需要访问您的信息流的权限(检查朋友的喜欢和评论)。
SELECT eid FROM event_member
WHERE (uid = me()
OR uid IN (SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()
ORDER BY mutual_friend_count DESC)
LIMIT 200)
)
AND start_time > now()
想象一下,我限制每个用户只检索5个事件。只有当用户有他/她正在参加/不确定的即将发生的事件的列表时,它应该不会那么难。
例如,执行graph.facebook.com/user-id/events
“似乎”就是这样工作。
但是,我想从event_member表中读取它并不是那么容易,因为如果我的任何朋友在那里,它将遍历大型事件数据库并逐个检查。我错了吗?
答案 0 :(得分:0)
据我所知(并且你也写过)这些限制没有记录。我建议您使用
LIMIT start, end
在您的子查询中如下
SELECT eid FROM event_member
WHERE (uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 0,24)
OR uid = me())
我使用的最佳做法是提前获取号码或朋友,然后创建"细分查询",即您有187个朋友,所需的限制为每个查询25个,然后你需要8"细分查询"从朋友那里获取整个活动列表。这也可以通过批量请求来完成(但是朋友需要先在单独的查询中计算)。
这些电话在Facebook方面的一般限制是处理时间或结果的长度我猜...