2016-10-29 64 views

回答

0

關鍵屬性沒有特別的特別之處。這只是通過在存儲的密鑰上調用.get()來獲取相關實體的便捷方式。

請注意,存儲密鑰不會存儲應用程序ID。如果您備份數據存儲並將其還原到其他應用程序,則所有存儲的密鑰都可以正常工作,因爲它們不依賴於應用程序ID。

在我的應用程序中,我更方便地存儲密鑰的數字ID(在整數屬性中)而不是密鑰本身。由於我知道那種,所以使用get_by_id()而不是get()很容易。

如何將密鑰存儲爲字符串?我不希望你看到任何顯着的尺寸減少,但你可以嘗試每種方式,並使用技巧here比較實體大小。

+0

「請注意,存儲密鑰不會存儲應用程序ID。」這很好,因爲當我在重複的關鍵屬性中查看數據存儲區查看器時,我看到JSON字段'projectId ='[project name]',這使我認爲它是。 「你會如何將密鑰存儲爲字符串?」例如,我將存儲我的密鑰,如'key:[namespace]:[kind]:[id]:[kind]:[id] ...'。 – Dan

+0

我沒有任何重複的鍵屬性,但對於簡單的鍵屬性,數據存儲區查看器只顯示'鍵(種類,ID)'。對重複的Key屬性可能會有所不同,但那會很奇怪...... –

1

使用KeyProperty的優點是直接導航到相應的實體從參考實體在這些屬性被識別並有與之關聯的鏈接(但前提是他們不重複數據存儲瀏覽器頁面的能力屬性)。

如果使用Key ID而不是像傑夫的答案中提到的那樣,要到達相應的實體,必須複製ID,切換到其他實體類型並通過各自的ID進行搜索/過濾,這可能很乏味。

如果使用到達相應實體的密鑰的其他編碼是偶模式,因爲ID或密鑰必須首先被解碼。

1

主要區別在於一個關鍵字包含祖先的所有信息。所以如果你有一個實體照片,這是實體相冊的孩子,這是實體用戶的孩子,有一個照片實體的關鍵是更方便,因爲你可以簡單地調用.get(key),否則你需要知道專輯的ID和用戶重建密鑰。

如果你的對象已經有父實體的ID,或者如果你不使用父子關係,存儲ID佔用更少的空間並且需要更少的帶寬(比如更小的JSON對象傳輸),這可能是也可能不是對你的應用程序很重要

相關問題