我正在使用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"`
}