微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firestore检索数据并转换为结构

如何解决Firestore检索数据并转换为结构

我正在使用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”,它们是对应数据类型的零值(零时间对象,空字符串)。

为使(解组)警官能够正常运行,他们必须能够访问您结构中的字段。这要求将字段导出(以大写字母开头)。

将您的结构更改为以下内容(注意:将名称保留在您的模式中的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 举报,一经查实,本站将立刻删除。