我们有这样的结构定义:
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并用一些非空名称保存时间”并不真实可行,因为我们已经(确切地)使用“”存储了数百万个实体,因此它似乎不可行迁移所有这些。