我有一個谷歌應用程序引擎應用程序,我想擴展我的一個實體定義。我如何確保存在的實體對象獲得正確初始化的新字段?下一次查詢它們時,存在的對象是否僅具有默認值?我想添加一個StringListProperty。谷歌應用程序引擎:如何添加字段到現有的實體
4
A
回答
5
如果您向模型添加新屬性,那麼當您加載它們時,如果您提供了默認值,則現有實體將具有默認值。儘管如此,他們不會在查詢中顯示該值,直到您獲取並再次存儲它們。
5
您將不得不將該屬性逐個添加到所有現有實體。
您沒有提及您正在使用哪種語言或API。程序的確切細節會因您的情況而有所不同。
通常,最安全的方法是使用不驗證實體的API加載每個實體。在python中,你可以使用Expando模型。在Java中,您可以使用低級數據存儲區API。 (使用JDO或JPA嘗試此操作可能不起作用)您現在需要遍歷所有現有實體。 (嘗試使用新的Mapper API來做到這一點,而不是大驚小怪)。對於每個實體,您將加載它,添加新的屬性,然後將其保存回數據存儲。現在,您可以安全地返回到驗證實體的框架,如JDO或非expando模型。
此方法適用於修改屬性的類型或刪除屬性。
相關問題
- 1. 谷歌應用程序引擎字符串實體
- 2. 谷歌應用程序引擎實體沒有被創建
- 3. 使用表單字段作爲實體鍵谷歌應用程序引擎python
- 4. 谷歌應用程序引擎 - 如何添加lib文件夾?
- 5. 谷歌應用程序引擎數據存儲重建現有實體
- 6. 要求在谷歌應用程序引擎的實體父母
- 7. 如何將引導,CSS,圖像,JS添加到谷歌應用程序引擎?
- 8. 谷歌應用程序引擎:實體ID不顯示
- 9. 關於谷歌應用程序引擎實體刪除
- 10. 谷歌應用程序引擎 - 更新實體
- 11. 谷歌應用程序引擎:修改1000個實體
- 12. 谷歌應用程序引擎Cron作業未更新實體
- 13. 谷歌應用程序引擎不加載的應用程序
- 14. 排序谷歌應用程序引擎
- 15. 如何將資源在python谷歌應用程序引擎添加到URL
- 16. 如何在eclipse中將jsp添加到谷歌應用程序引擎中?
- 17. 谷歌應用程序引擎的Bigtable
- 18. JPA的谷歌應用程序引擎
- 19. WebTest的谷歌應用程序引擎
- 20. 谷歌應用程序引擎 - Servlet的:
- 21. 谷歌應用程序引擎的phpBB
- 22. 谷歌應用程序引擎的TaskOptions
- 23. Django的谷歌應用程序引擎
- 24. 谷歌應用程序引擎 - 只查詢某個字段
- 25. 如何使用谷歌應用程序引擎從android中查詢實體?
- 26. 谷歌應用程序引擎:添加任務,從任務
- 27. 添加HSTS頭(谷歌應用程序引擎)
- 28. 谷歌應用程序引擎 - 添加方法db.model
- 29. 谷歌應用程序引擎應用程序的索引
- 30. 谷歌應用程序引擎沒有發現問題
我很滿意提供默認值(正如尼克約翰遜的回答所暗示的)。您的解決方案是否解決了比這種情況更復雜的問題,例如新屬性的價值取決於每個實體實例的具體情況? – Joey 2010-07-26 08:06:05
@Joey尼克的解決方案更容易爲你的情況。更改屬性的類型或刪除屬性將需要更復雜的方法。 – 2010-08-01 16:38:42