2011-11-09 35 views
3

我想通過發送對象「主鍵」(長ID與自動增量)的ajax查詢從GAE數據存儲刪除記錄。GAE:objectify刪除編號

目前,我這樣做(硬編碼的關鍵= 6):

Objectify ofy = ObjectifyService.begin(); 
ofy.delete(Test1.class , 6); 

這工作:它會刪除其有鑰匙= 6的實體。 但出於安全原因,我需要另一個參數(fyi:「parent_user」),因此只有所有者才能刪除此對象。 看來Objectify.delete()不允許傳遞比鑰匙更多的參數...

我該如何解決這個問題?因爲使我的可選參數Objectify.get() +鍵得到充分的對象,那麼整個對象發送到刪除()是nubish &未優化...

回答

3

截至http://objectify-appengine.googlecode.com/svn/trunk/javadoc/index.html介紹,Objectify.delete()不採取任何除了對象鍵,ID或字符串之外的其他參數。

因此,您需要首先根據您的過濾器獲取對象,然後刪除它們。但是,爲了優化這一點,您只能獲取對象的關鍵字而不能獲得完整的對象。然後根據密鑰刪除。

希望這會有所幫助!

+0

請更新鏈接 –

0

如果您的數據模型允許您讓用戶成爲對象的數據存儲祖先,那麼您可以擺脫查詢,因爲祖先是鍵的一部分。

我經常做的是在每次請求的開始時對用戶進行身份驗證,該請求使用Objectify的@Cached註釋來緩存所有用戶(以及它們的特權,它們嵌入到用戶中)。

然後,大部分與用戶有關的數據都以用戶爲祖先。這樣,每當用戶嘗試訪問或刪除資源時,我都不會意外地允許用戶在任何不屬於她的對象上執行此操作。總而言之,只有獲得快速和可緩存的內容。