我们有这样的结构定义:
type TimeMs struct {
time.Time
}
我们的各种数据存储区实体定义包括这种类型的字段,例如:
type Whatever struct {
Created TimeMs
}
在过去,这总是很好,我们没有任何特殊的hackery . 如果您在 Cloud 控制台中检查这些实体,则字段's name was 1717614 (note the trailing dot) which was a little odd but didn' t似乎会导致任何问题 . 但是,cloud datastore package的最新版本似乎并没有很好地发挥作用 . 当我们尝试做 client.Put
时,我们得到一个错误:
意外错误:rpc错误:code = 3 desc = flattened property.name是空字符串 .
我们还看到"if nested struct implements PLS, use it"的"if nested struct implements PLS, use it"似乎可能有用 . 因此,我们尝试使 TimeMs
结构实现PropertyLoadSaver(将其匿名嵌入的time.Time保存为Name =“”的属性),但这会导致相同的错误 .
看起来这似乎是回归 . 我错过了什么吗?我们还没有想到某种解决方法吗?
请注意“只是让它实现PropertyLoadSaver并用一些非空名称保存时间”并不真实可行,因为我们已经(确切地)使用“”存储了数百万个实体,所以迁移所有实体似乎不可行他们 .