Google App Engine上的交叉点

时间:2011-02-03 18:20:19

标签: facebook google-app-engine google-cloud-datastore

当用户Facebook连接到我的网站时,我想将用户的Facebook好友列表缩小到那些已经注册过我网站的人。

所以我有两个列表

  • 用户的facebook朋友(约1000)的代码中的列表
  • 已注册我网站的所有FB用户的GAE表(大约1000)

最有效的方法是对所有已注册的FB用户的UID执行单个查询并在代码中执行交集吗?

如果有更多像10,000名FB用户注册的话,那么最有效的方法是什么呢?<<< 30秒?

1 个答案:

答案 0 :(得分:5)

稍微转过头来解决问题。当用户登录时,获取他的朋友列表并将facebook数字id存储在用户对象的list属性中。 (您也可以使用索引对象...在GAE中执行扇出时查看talk by Brett Slatkin。)

这样的东西
class User:
  friend_ids = db.ListProperty()

当新用户登录时,只需对friend_ids = :id进行查询和过滤即可。这应该为您提供现有用户的列表,他们是您当前用户的朋友。我相信其实就是你想要的。

如果您要查询的ID包含在列表中,则在列表属性上过滤的用户查询将返回用户,以防您不熟悉。文档为here