登录
首页 >  Golang >  Go问答

Firestore 数据检索和转换

来源:stackoverflow

时间:2024-03-22 09:09:40 184浏览 收藏

Firestore 的数据检索和转换涉及使用特定的数据结构和命名约定。在提供的数据片段中,`userfeed` 结构中的字段名未导出(未以大写字母开头),这会阻止 (反)封送拆收器访问这些字段。因此,当文档数据转换为结构时,这些字段将被设置为零值(例如时间对象为 0,字符串为空)。为了解决此问题,需要将结构字段导出,确保与架构中字段名称保持一致。

问题内容

我正在使用 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: %#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”,这些是其相应数据类型的零值(零时间对象、空字符串)。

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

将结构更改为以下内容(注意:将结构标记中的名称保留为架构中的名称,仅更改字段名称):

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

终于介绍完啦!小伙伴们,这篇关于《Firestore 数据检索和转换》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>