我们有这样的结构定义:

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并用一些非空名称保存时间”并不真实可行,因为我们已经(确切地)使用“”存储了数百万个实体,所以迁移所有实体似乎不可行他们 .