【问题标题】:How do I represent hierarchical data in Cloud Firestore using a struct?如何使用结构表示 Cloud Firestore 中的分层数据?
【发布时间】:2020-11-27 07:19:49
【问题描述】:

我正在查看 how hierarchical data works in Cloud Firestore,想知道如何最好地将其转换为 Go 结构。

在链接的示例中,有一个聊天室集合,每个聊天室文档都有两个字段:名称和消息集合。

考虑到消息集合的写入和读取相当频繁,以下是否是使用 go 结构表示聊天室的好方法?我还想在 Go 代码中访问集合中的消息。

type ChatRoom struct {
    Name     string
    Messages *firestore.CollectionRef
} 

这个定义似乎可以编译并且工作正常,但我想知道是否有更好或更惯用的方法来解决这个问题。

【问题讨论】:

    标签: firebase go google-cloud-firestore


    【解决方案1】:

    文档没有提到文档中支持的 CollectionRef。所以我不确定这是否会奏效。你可以看到我指的是here

    另一方面,我认为您不会从中真正获得任何收益,因为您可以通过执行以下操作来访问该集合。

    client.Collection("chatroom/" + <NAME> + "/messages")
    

    另外,我认为将像 ChatRoom 这样的高级类型与 Firestore 实现纠缠在一起并不是一个好习惯。所以我会删除它并创建一个界面来隐藏聊天室和消息存储方式的详细信息。你可以这样做。

    type Repo interface {
        GetChatRoom(name string) (ChatRoom, error)
        GetMessages(name string) ([]Messages, error)
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2013-08-08
      • 2012-10-29
      相关资源
      最近更新 更多