我正在查看how hierarchical data works in Cloud Firestore,并想知道如何最好地将其转换为Go结构。
在链接的示例中,有一个聊天室集合,每个聊天室文档都有两个字段:名称和消息集合。
考虑到消息集合中的写入和读取操作相当频繁,以下是使用go结构表示聊天室的好方法吗?我还想在Go代码中访问集合中的消息。
type ChatRoom struct {
Name string
Messages *firestore.CollectionRef
}
这个定义似乎可以编译并且可以正常工作,但是我想知道是否有更好或更惯用的方式来解决这个问题。
最佳答案
这些文档没有提到文档中支持的CollectionRef。因此,我不确定这是否行得通。您可以看到我指的是here。
另一方面,我不认为您会从中真正受益,因为您可以通过执行以下操作来访问集合。
client.Collection("chatroom/" + <NAME> + "/messages")
另外,我认为将像ChatRoom这样的高级类型纠缠到Firestore实现中也不是好习惯。因此,我将其删除并创建一个界面,该界面隐藏了如何存储ChatRooms和消息的详细信息。你可以做这样的事情。type Repo interface {
GetChatRoom(name string) (ChatRoom, error)
GetMessages(name string) ([]Messages, error)
}
关于firebase - 如何使用结构表示Cloud Firestore中的分层数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63293565/