gpt4 book ai didi

google-app-engine - 转到 Google 数据存储空值

转载 作者:IT王子 更新时间:2023-10-29 02:10:55 25 4
gpt4 key购买 nike

我的数据存储对象如下所示:

created (timestamp)
guid (string)
details (string)
start (string)
end (string

通常,detailsstartend 都是 NULL

在 Go 中,我正在尝试这样做:

    type Edge struct {
created time.Time
details string `datastore: "details,omitempty"`
guid string `datastore: "guid,omitempty"`
start string `datastore: "start,omitempty"`
end string `datastore: "end,omitempty"`
}

for t := client.Run(ctx, q); ; {
var x Edge
key, err := t.Next(&x)
if err == iterator.Done {
break
}
if err != nil {
fmt.Printf("error caught: %v\n\n", err)
}
fmt.Printf("Key=%v\nEdge=%#v\n\n", key, x)
}

输出错误总是类似于:

error caught: datastore: cannot load field "guid" into a "main.Edge": no such struct field

Key=/edges,4503602429165568
Edge=main.Edge{created:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, details:"", guid:"", start:"", end:""}

当我在数据存储控制台中搜索该键时,我看到 guid 是一个有效的 string

GetAll 给了我几乎相同的问题。

我的问题是:

  • 我是 Go 新手。我在这里做错了什么吗? (任何拼写错误都是 Stackoverflow 特有的。因为我在这里更改了一些内容)
  • 在将数据存储放入结构之前,有没有办法查看发送回的数据存储是什么?
  • 有些值有时会是null。像 startenddetails。这对结构中的 string 有效吗?

谢谢。

最佳答案

立即突出的两个问题:

  1. 必须导出结构字段,因此名称以大写字母开头。
  2. 你的 tag values是“无效的”(他们不遵守约定)。不得在键 datastore: 和值 "details,omitempty" 之间留空格。

所以使用下面的结构定义:

type Edge struct {
Created time.Time `datastore:"created"`
Details string `datastore:"details,omitempty"`
Guid string `datastore:"guid,omitempty"`
Start string `datastore:"start,omitempty"`
End string `datastore:"end,omitempty"`
}

上述2个问题见类似问题:

golang mgo getting empty objects

Why struct fields are showing empty?

如果 Datastore 中的属性为 null,这对于 Go 结构来说不是问题。在这种情况下,相应的结构字段将是 zero-value它的类型,在 string 类型的情况下是空字符串 "" 。如果您希望能够区分数据存储区 null、数据存储区“缺失属性”和实际空字符串 "",您可以将字段类型更改为指针(如 *string),在这种情况下,缺失的属性和 null 值将对应于一个 nil 指针值,以及一个现有但为空的字符串值将是指向空字符串值的非 nil 指针。

关于google-app-engine - 转到 Google 数据存储空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com