0

如何在查詢時計算實體中的屬性?Cloud Endpoints在查詢時計算實體屬性

例如,如果我有一個Post實體,我也getPost(Long postId),我想在那一刻,通過獲取的多少Like實體有與特定Post密鑰的計數來計算myPost.likes財產。

OR

如果這是不可能的,我正在考慮存儲Int likes屬性每個Post實體,我簡單地通過每一個新Like插入一個時間遞增。

回答

1

兩者都可以工作。對於後者,如果你期望許多lps(喜歡每秒),我會使用分片計數器。我會使用第一種方法,雖然從那時起,類似的可以具有元類似,當它被創建時,由誰等。

在查詢時間計算沒有真正的。你將不得不編寫查詢來自己總結喜歡的東西。在Objectify中,可以使用@OnLoad註釋在查詢後查詢每個帖子。我強烈建議你不要那樣做,因爲那將是查詢的每個返回Post的查詢。你真的應該手動做到這一點,以避免在你甚至不需要它們時對多餘的查詢。

+0

我所做的是查詢「Post」的列表,然後遍歷每個Post,並查詢有多少個Like類型的實體,然後設置Post的類似數量有金額。這是很多查詢,但GAE可以處理這個權利? – Micro

+1

我會盡量減少查詢次數。儘管我現在不知道該怎麼做,但我不得不睡過去。 Sharding計數器不會提高查詢的數量,只是限制結果數量,也許明天我會有一個好主意 – konqi

+0

所以我想了一下,原來的第二種方法很糟糕,因爲你會碰到1寫第二個限制,但是這種方法可以與分離計數器一起使用,這與您當前的方法類似,唯一的區別是您可以在Google文檔中找到的分片計數器的實現使用緩存,因此在您平常遇到的情況下在緩存中的喜歡數量,你不需要查詢,所以這將是性能的最佳選擇,但是,如果你的'Like's有元數據或誰喜歡'Post'的引用,這將不會工作 – konqi