我正试图弄清楚如何使用Cloud Firestore为我的运动应用程序构建数据。数据模型如下:
我的第一个想法是简单地将数据存储在带有数字键的后续子集合中。但是,我需要能够查询一组练习中的所有数据(包括所有练习,部分和说明)。由于子集合不包含在文档查询的结果中,因此将所有数据存储为后续子集合将要求我进行许多查询以检索单个练习集合的所有数据。
我还可以将上述每个作为单独的顶级集合存储,并保留对每个父类型的引用(例如,指令将具有setId,exerciseId和partId)。然后,我可以对每个练习,部件和说明进行查询,对setId进行过滤。但是,这仍然需要多个查询,并且还需要在每个级别进行映射以在客户端上重建数据。
最后,因为我预计不需要查询练习级别,所以我可以将练习文档中的所有部分和说明存储在嵌套的对象/数组中。这对我来说有点味道,当我试图通过Web控制台以这种方式添加几个级别的嵌套数据时,firestore引发了错误。
非常感谢任何指导。
答案 0 :(得分:0)
由于所有数据都是有序的,因此您可以创建自己的基于整数的运动ID并对其进行查询。该ID将由前导“ 1”,集合号,练习号,零件号和指令号组成。 示例:
exerciseID: 102030101
"text": "First, do x."
"imageURL": "Set2Exercise3Part1Instruction1.jpg"
exerciseID: 102030102
"text": "Second, do y."
"imageURL": "Set2Exercise3Part1Instruction2.jpg"
exerciseID: 102030103
"text": "Third, do z."
"imageURL": "Set2Exercise3Part1Instruction3.jpg"
然后要查询第2组,练习3,第1部分的所有说明,图片等,您将包括以下行:
exerciseAppInfo.where("exerciseID", ">=", "102030101").where("exerciseID", "<=", "102030103")
答案 1 :(得分:0)