2011-08-07 104 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