使用 Flutter 的 Firestore 组集合查询
Posted
技术标签:
【中文标题】使用 Flutter 的 Firestore 组集合查询【英文标题】:Firestore group collection query using Flutter 【发布时间】:2020-02-04 18:44:01 【问题描述】:我是 Firestore 数据库的新手。我正在使用使用颤振和 Firestore 的应用程序。我的应用程序的数据库结构是这样的:
Rooms --Room1-----Reservations.....reservation dates
.....reservation dates
Room2-----Reservations.....reservation dates
Room3
Room4-----Reservations.....reservation dates
Room5-----Reservations.....reservation dates
.....reservation dates
.....reservation dates
'Rooms' 是 1 级集合,包含所有房间详细信息。每个房间数据都包含“预订”集合以保存该房间的所有预订详细信息(入住和退房日期)。现在我想获取在特定日期范围内可用的房间列表。如何使用“组集合查询”来满足此要求?或者可以通过“组集合查询”来做同样的事情?
【问题讨论】:
不要描述你的数据库的样子,而是添加它的截图。 【参考方案1】:晚了,但是,如果有人回到这个,现在在 firestore 中有一个叫做 collectionGroup 查询的东西,如果它们具有相同的名称,您可以在其中获取所有子集合。可以这样做
Firestore.instance.collectionGroup('Reservations').getDocuments()
这将为您提供所有房间的所有预订列表。收藏组查询请详细阅读here in the documentation
【讨论】:
【参考方案2】:现在我想获取在特定日期范围内可用的房间列表。
鉴于您存储了预订,如果当时没有预订,则可以使用房间。 Cloud Firestore 无法查询是否缺少数据,因此在您当前的模型中无法进行该查询。
如果您将可用插槽存储在每个房间的 Reservations
集合中,您可以查询所有 Reservations
集合以获取所有房间的可用插槽。但请注意,此查询的结果是来自Reservations
的文档,而不是单个房间;如果您需要其中的信息,则需要分别加载每个房间。
或者,您可以在每个 Room 文档中存储仍然可用的插槽列表。这样您就可以对所有房间进行常规查询以查看哪些房间仍然可用,然后在事务中对房间文档及其Reservations
集合执行更新。
【讨论】:
以上是关于使用 Flutter 的 Firestore 组集合查询的主要内容,如果未能解决你的问题,请参考以下文章
Firestore 规则使用 Flutter 客户端验证时间戳
Flutter Firestore:从 Firestore 中检索数据并在 Flutter 中显示为小部件
Flutter 使用 Stream 检索 Firestore 集合
Firestore,Flutter,Async:方法不等待异步方法完成