2011-08-07 106 views
0

我有一个拥有Facebook ID的帐户实体。Google App Engine大型IN子句查询

有时,客户端可能会将所有的facebook ids(客户端facebook朋友)发送到服务器。

我们希望在客户端提供的facebook ids中选择所有账户。

考虑到人们可能会有1000多个朋友,循环和调用每个Facebook上的ID似乎相当缓慢。此外,GAE仅限于使用IN子句的30个查询。

有没有人有类似的情况?你是怎么处理的呢?

谢谢!

回答

1

您可以设置一个使用Facebook ID作为允许您使用Model的关键的模型。 get_by_key_name(key_names = fb_ids)一次获取fb_ids中所有带有键的模型。

例如

class FBModel(db.Model): 
    account = db.ReferenceProperty(reference_class=Account) 

在创建模型:

model = FBModel(key_name=fb_id) 
+0

这是否意味着用户必须事先上传他的所有朋友的Facebook服务器或干脆与他facebook_id更新我的帐户实体? – dnkoutso

+0

你想从Facebook的api或数据库中获取好友数据吗?显然你的朋友朋友将不得不有一个帐户与你,让你有他们的Facebook的ID和信息。 –

+0

每个客户都会接收并将facebook好友存储到自己的设备(其移动应用程序)中。然后,当我执行GAE请求时,我将这个数据库并且序列化成一个JSONArray并且发送它。 然后服务器将获取这些数据并尝试查找客户端提供的集合中的所有帐户。 我认为你的解决方案可以做到这一点,我看到一个关于类似的视频。 如果你有更多的信息,请评论,我感兴趣:)否则,我会尝试一下,并标记回应。 – dnkoutso