约会应用程序中的Firebase数据库建模

时间:2020-07-24 13:27:22

标签: firebase flutter google-cloud-firestore

这是我关于SO的第一个问题,我只想让您知道这个社区已经在相当长的一段时间内为我提供了帮助,我真的很感谢你们所有人。所以谢谢。 ?

现在,让我向您介绍一下这个问题:

好几天以来,我一直在努力为一个非常复杂(至少对我而言)的约会应用程序弄清楚这个数据库模型。

患者选择一天及其相应的时段(15小时时段-从7AM到9PM)以完成与治疗师的预约。问题是: 我不想显示不可用的广告位,因此每次选择日期时都必须进行一些实时查询。 我找到了一种方法,可以通过执行 isEqual 查询来检查治疗师议程集合中是否存在选择的日期。如果为false,则日期可用。

问题是:每个治疗师都有各自的子集,称为议程,但我还需要检查称为约会的根集合中是否有相同的日期,其他治疗师也使用该日期。此“约会”集合与可预订的房间有关。有3个房间,并且如果有的话,任何房间都可以自动预订。这是一个非常复杂的操作,所以这让我发疯了。

根集合

enter image description here

到目前为止我得到了什么

enter image description here

治疗师议程

enter image description here

我很确定我缺乏解决这个问题的逻辑能力,答案可能就在我的面前,但是我没看到。

有人可以帮我解决这个难题吗?是否可以在一个查询功能中实现所有这些功能(或在同一功能中执行多个查询)?有没有更好的方法或数据库结构可以做到这一点?

再次感谢!

1 个答案:

答案 0 :(得分:1)

我建议您使用随机ID存储文档,并在其中存储一个名为appointment_date的新字段,该字段将保留日期,之后,您可以使用{ {1}},该查询只会获取任何专家的约会。

您还可以在约会文档whereEqualTo("appointment_date", yourDate)中存储一个附加字段,该字段还可以帮助您通过类似查询的方式获取每位专家的所有约会

specialist_id

这是一个kotlin代码示例,但是,采用这种结构,您可以更灵活地查询议程中的日期,也可以查询任何特殊列表日期

然后,您的专家不需要一个名为Agenda的子集合,您只需在上面进行查询即可获得每个专家的约会

检查:https://firebase.google.com/docs/firestore/query-data/queries