Firestore检索数据并转换为结构



我正在使用firestore存储库中的代码片段:

firestore golang片段

我有一个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: %#vn", 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]

我的消防仓库档案存储为/feed/userName/userFeed/documents

我不明白,为什么转换后的数据会转换为0和0。

返回的数据不是"转换为0和零";,这些是它们对应的数据类型(零时间对象、空字符串(的零值。

为了使(取消(封送拆收器能够正常工作,它们必须能够访问结构中的字段。这需要导出字段(以大写字母开头(。

将结构更改为以下内容(注意:保持结构标记中的名称与架构中的名称相同,只更改字段名称(:

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

最新更新