2015-12-13 22 views
0

我所擁有的用戶由一種:谷歌數據存儲事務時,沒有實體組

USER 
    username<Key,String> 
    friends <array of strings> 

兩個用戶可以是朋友(用戶可以有很多朋友)。如果用戶是朋友,他們的用戶名都在彼此的朋友的財產內。因此,如果他們成爲朋友,我需要將每個用戶名插入到兩個實體中,並確保它們都被插入,並且如果出現錯誤或應該回滾(全部或全部操作)。從我理解的交易中讀取Google Datastore內部的交易只能在實體組內完成。由於這些是兩個USER實體,它們之間沒有父/子關係,所以它們都是根實體。什麼是最好的方法來保證這一行動經歷。如果用戶被刪除,這同樣適用,那麼我需要從該用戶的所有用戶的所有惡魔屬性中刪除該用戶,並且我必須保證這一點。

回答

2

數據存儲區支持涉及multiple entity groups的交易。

+0

完美,這使得我的造型更容易!感謝您的鏈接! – user2924127

+0

認爲XG交易中的實體數量有限制。如果您有100個朋友,則無法在單個交易中包裝該數量的實體。在這種情況下,您需要建立一個獨立的控制活動,管理一系列事務刪除,並提供前滾模型。運行這是一個可重試的任務,它跟蹤它的位置,任何重試最終都會清除(刪除)所有的朋友引用。 –

+0

@TimHoffman - 每個「友誼」只需要更新兩個實體。 –