回滚后如何使用旧架构(没有新列)和添加了新列的 kind/table

How to use old schema(with no new columns) with a kind/table having new columns added, after a rollback

我在 Google Cloud Datastore 中添加了一些新列,Golang 中的新模式正在读取它。现在,如果由于这些新列不存在的某些问题,我想将二进制文件回滚到旧模式,那么理想的策略是什么?我有两个选择:

  1. 写一个脚本在我想回滚时从 GDS 中删除新列
  2. 添加一种标记功能以禁用新列,以便该类型适用于旧架构。我不确定这个解决方案是否存在。

哪个是理想的,如何实现?

我能够计算出一个可以在这些情况下提供帮助的变量 omitempty。我在它的解释上找到了一个很好的博客 - https://www.sohamkamani.com/golang/omitempty/ .

如果我在数据库中存储一个默认值为零的列,那么 omitempty 在读取 json 时将不会读取它。通过这种方式,我将能够对多个数据库模式使用相同的 golang 模式。

type User struct {
    ID           string        `json:"Id" datastore:"Id"`
}