谷歌应用引擎:如何将字段添加到现有实体

Joe*_*oey 4 google-app-engine entity

我有一个谷歌应用引擎应用程序,我想扩展我的一个实体定义.如何确保现有实体对象正确初始化新字段?现在的对象,下次我查询它们时,是否只有默认值?我想添加一个StringListProperty.

Pet*_*ore 5

您必须逐个将属性添加到所有现有实体.

您没有提到您使用的语言或API.该程序的具体细节将根据您的具体情况而有所不同.

通常,最安全的方法是使用不验证实体的API加载每个实体.在python中,您可以使用Expando模型.在java中,您可以使用低级数据存储区API.(尝试使用JDO或JPA可能不起作用)您现在需要遍历所有现有实体.(尝试使用新的Mapper API以相对较少的忙乱做到这一点).对于每个实体,您将加载它,添加新属性,然后将其保存/保存回数据存储区.现在,您可以安全地返回到验证实体的框架,例如JDO或非expando模型.

此方法适用于修改属性的类型或删除属性.


Nic*_*son 5

如果向模型添加新属性,则在加载时,现有实体将具有默认值(如果提供了默认值).但是,在您获取并重新存储它们之前,它们不会显示在该值的查询中.