gpt4 book ai didi

go - Firestore 检索数据并转换为结构

转载 作者:行者123 更新时间:2023-12-01 22:11:24 26 4
gpt4 key购买 nike

我正在使用来自 firestore 存储库的代码片段:
firestore-golang-snippets
我有一个 UserFeed 的结构

type UserFeed struct {
date time.Time `firestore:"date,omitempty"`
reelUrl string `firestore:"reelUrl,omitempty"`
uid string `firestore:"uid,omitempty"`
username string `firestore:"username,omitempty"`
}
我正在编写一个 getFeed 函数来获取用户提要,如下所示:
func GetFeed(ctx context.Context, client *firestore.Client) error {
// [START fs_get_all_docs]
fmt.Println("All feed items:")

userID := "abcdefghsifkasfkhkfjlkdsaj"

userFeedRef := client.Collection("feed").Doc(userID).Collection("userFeed")
iter := userFeedRef.Documents(ctx)

for {
doc, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
return err
}
var userFeed UserFeed

doc.DataTo(&userFeed)
// fmt.Println(userFeed)
fmt.Printf("Document data: %#v\n", userFeed)
fmt.Println(doc.Data())
}
// [END fs_get_all_docs]
return nil
}
现在,当我运行它时,我得到了输出:
Document data: feed.UserFeed{date:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, reelUrl:"", uid:"", username:""}
map[date:2020-08-15 07:06:16.183 +0000 UTC reelUrl:https:correctURL.com uid:correctUID username:somethingElse]
我的 Firestore 文件存储为/feed/userName/userFeed/documents
我无法理解,为什么转换后数据会转换为 0 和 nil。

最佳答案

返回的数据不会“转换为 0 和 nil”,它们是对应数据类型的零值(零时间对象、空字符串)。
为了(un)marshaler 能够正常运行,它们必须能够访问结构中的字段。这要求字段为 导出 (以大写字母开头)。
将您的结构更改为以下内容(注意:保持结构标记中的名称与架构中的名称相同,仅更改字段名称):

type UserFeed struct {
Date time.Time `firestore:"date,omitempty"`
ReelUrl string `firestore:"reelUrl,omitempty"`
Uid string `firestore:"uid,omitempty"`
Username string `firestore:"username,omitempty"`
}

关于go - Firestore 检索数据并转换为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63423696/

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