我遇到了问题,我很确定这里的人可以帮助我。
我是编码的初学者(仅1或2个月),并且很难弄清逻辑的工作原理。
这是我的问题:
我在firebase中有3个收藏集:
比赛
游览
注释
->我有多个锦标赛,每个锦标赛包含5个不同的游览,每个锦标赛包含用户记录的笔记。
所以我的问题是,我该如何关联这3个集合并仅显示示例:
锦标赛A->巡回赛:A,B,C,D,E->每次锦标赛的用户注释吗?
我只需要帮助我思考如何将所有内容分组。
答案 0 :(得分:0)
没有一个正确的数据模型,因为(对于所有NoSQL解决方案)最佳的数据模型取决于应用程序的用例。
但是据我所知,您有两个主要选择:
Firestore是一个包含文档集合的数据库。每个文档都可以在其下包含子集合。鉴于您的数据模型是分层的,这意味着您可以像这样嵌套它们:
Tournaments (collection)
Tournament1 (document)
Tours (collection)
Tour1_1 (document)
Notes (collection)
Notes1_1_1 (document)
现在,每个锦标赛都有自己的巡回赛,并且每个巡回赛都有自己的音符。您可以单独访问它们:因此,只需阅读一次游览的便笺,而无需为此建立查询。
另一种方法是拥有三个顶级集合,并通过将父ID嵌入到每个子文档中来将每个子文档连接到其父文档,如下所示:
Tournaments (collection)
Tournament1 (document)
Tours (collection)
Tour1_1 (document)
TournamentID: Tournament1
Notes (collection)
Notes1_1_1 (document)
TourID: Tour1_1
使用此模型,您可以通过查询ref.collection("Tours").where("TournamentID", "==", "Tournament1")
来获得所有锦标赛的巡回赛。
第二个模型的优点是您可以访问所有锦标赛的巡回演出,而在第一个模型中,您一次只能访问一个锦标赛的巡回演出(至少在Firestore实施收藏组查询之前)。
第二个模型的一个缺点是,您将始终需要查询,并且就写入而言,它的可伸缩性较差。