GAE Go数据存储 - 忽略一些变量?

时间:2015-02-28 02:55:23

标签: database google-app-engine go data-structures google-cloud-datastore

假设我首先将此结构保存到数据存储区中:

type Foo struct {
    Important string
    NotImportant string
}

但后来我决定我不再关心NotImportant了,并且想停止支持它。问题是,我的数据存储区已经填充了数据,我不能只删除它并用更新的结构替换整个数据库。我知道可以创建自定义的加载和保存方法,如Load(c <-chan datastore.Property) error {,但这需要在大型结构上花费很多精力。

是否有一些简单的方法可以告诉Google App Engine Go数据存储区在保存时忽略某些变量而不是抱怨我正在加载数据的结构没有我不再关心的变量?< / p>

2 个答案:

答案 0 :(得分:3)

见这里:https://cloud.google.com/appengine/docs/go/datastore/reference 特别是关于属性的部分。

type Foo struct {
    Important string
    NotImportant string `datastore:"-"`
}

datastore:"-"位称为结构标记。它们允许您指定有关struct字段的元数据。 A&#34; - &#34;意味着忽略这个字段。 Go规范在此讨论它们:https://golang.org/ref/spec#Struct_types

encoding / json包(和许多其他包)有类似的标签。

答案 1 :(得分:3)

你可以那样做

if err != nil && err != err.(*datastore.ErrFieldMismatch) {         
}