google datastore:break change re:匿名结构字段?

时间:2017-03-07 22:39:55

标签: go google-cloud-datastore

我们有这样的结构定义:

type TimeMs struct {
    time.Time
}

我们的各种数据存储区实体定义包括这种类型的字段,例如:

type Whatever struct {
    Created TimeMs
}

在过去,这总是很好,没有我们的任何特殊的hackery。如果您在云控制台中检查这些实体,则该字段的名称为“已创建”。 (注意尾随点)这有点奇怪,但似乎没有引起任何问题。但是,cloud datastore package的最新版本似乎并没有很好地解决这个问题。当我们尝试执行client.Put时,我们会收到错误:

  

意外错误:rpc错误:code = 3 desc = flattened property.name是空字符串。

我们还看到recent commit的“如果嵌套的结构实现了PLS,请使用它”,这看起来很有用。所以我们尝试使TimeMs结构实现PropertyLoadSaver(将其匿名嵌入的time.Time保存为Name =“”的属性),但这会导致相同的错误。

看起来这似乎是回归。我错过了什么吗?我们还没有想到某种解决方法吗?

请注意“只是让它实现PropertyLoadSaver并用一些非空名称保存时间”并不真实可行,因为我们已经(确切地)使用“”存储了数百万个实体,因此它似乎不可行迁移所有这些。

0 个答案:

没有答案