如何解决Firestore检索数据并转换为结构
我正在使用Firestore存储库中的代码段:
type UserFeed struct {
date time.Time `firestore:"date,omitempty"`
reelUrl string `firestore:"reelUrl,omitempty"`
uid string `firestore:"uid,omitempty"`
username string `firestore:"username,omitempty"`
}
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”,它们是对应数据类型的零值(零时间对象,空字符串)。
为使(解组)警官能够正常运行,他们必须能够访问您结构中的字段。这要求将字段导出(以大写字母开头)。
将您的结构更改为以下内容(注意:将名称保留在您的模式中的struct标记中,仅更改字段名称):
type UserFeed struct {
Date time.Time `firestore:"date,omitempty"`
ReelUrl string `firestore:"reelUrl,omitempty"`
Uid string `firestore:"uid,omitempty"`
Username string `firestore:"username,omitempty"`
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。