1

我正在使用GAE並擁有一個用戶表。現在我想模擬用戶之間的朋友關係。我正在考慮有3個屬性user1,user2request_status,但問題在於查詢特定用戶的朋友。由於GAE不允許OR過濾,我必須合併兩個查詢。顯然這是非常低效的。這只是我的方法中的一個問題。 如果有人可以建議一個解決方案,讓我跟蹤所有的朋友請求以及友誼,那麼這將是非常有益的。在GAE中建立朋友關係

回答

1

非規範化將使您可以通過單個查詢更高效地找到用戶的朋友。嘗試在你的模型,它包含user1user2存儲另一個屬性users(一db.ListProperty)。然後,你可以簡單地執行這樣的查詢找到用戶的朋友:

friendships = Friendship.all().filter('users =', user).fetch(...) 

的好處是,你只需要一個單一的查詢(快)。缺點是你將有一些額外的空間開銷來存儲users屬性和(自動)索引。

+0

是的但是用戶1和用戶2的順序是不確定的,如果用戶A是發起者而不是用戶1否則它將是用戶2, – techbeast 2010-11-17 07:10:23

+0

所以用戶屬性的唯一性在所有情況下都不存在 – techbeast 2010-11-17 07:11:00

+0

'用戶'財產並不重要。當你測試ListProperty的相等性時,它測試它的任何元素是否等於你提供的值。因此,如果您存儲執行上述查詢,它將返回所有'user1'或'user2'等於'user'的'Friendship'實體(假設您正確填充'users')。 – 2010-11-17 08:38:52