假设我首先将此结构保存到数据存储区中:
type Foo struct {
Important string
NotImportant string
}
但后来我决定我不再关心NotImportant
了,并且想停止支持它。问题是,我的数据存储区已经填充了数据,我不能只删除它并用更新的结构替换整个数据库。我知道可以创建自定义的加载和保存方法,如Load(c <-chan datastore.Property) error {
,但这需要在大型结构上花费很多精力。
是否有一些简单的方法可以告诉Google App Engine Go数据存储区在保存时忽略某些变量而不是抱怨我正在加载数据的结构没有我不再关心的变量?< / p>
答案 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) {
}