firebase - Firebase Cloud Firestore 设计
问题描述
我无法完成我正在开发的 android 应用程序的设计。我需要在三个主要组中存储数据;主持人、志愿者和活动。我遇到的问题是大多数活动将有不止一个志愿者,我不知道应该如何构建集合,以便我可以查询我的数据库以查找主持人创建的所有活动以及每个活动中的所有志愿者。
我目前有 3 个顶级收藏;主持人、志愿者和活动。但是,我想知道这是否实际上是解决此问题的最佳方法,并且有人可以解释如何使用这种设计为每个事件中的所有志愿者查询数据库。
如果这不是最好的方法,那么如果有人能解释另一种方法以及它是如何工作的,我将不胜感激。
解决方案
我目前有 3 个顶级收藏
这是构建 Cloud Firestore 数据库的常用方法。
有人可以解释如何使用这种设计查询每个事件中所有志愿者的数据库。
一个可能的数据库结构可能是:
Firestore-root
|
--- volunteers (collection)
| |
| --- volunteerId (document)
| |
| --- //Volunteer properties
| |
| --- eventIds: ["generatedEventId", "generatedEventId"]
|
--- events (collection)
|
--- eventId (document)
|
--- //Event properties
如您所见,我在数组中添加了eventId
作为值,因为 a可以参与多个事件。要获取每个活动中的所有志愿者,您可以使用以下查询:eventIds
volunteer
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference volunteersRef = rootRef.collection("volunteers");
Query query = volunteersRef.whereArrayContains("eventIds", "generatedEventId");
其中generatedEventId
是您参加的志愿者活动的 ID。
由于您没有为平台选择标签,因此我在 Android 中编写了上述代码行,但也可以简单地为其他编程语言编写。
推荐阅读
- android - 从 Flutter 的方法通道访问 Kotlin 中的参数数据
- kubernetes - kubeadmin 用户可以创建超过 ClusterResourceQuota 硬限制的资源吗?
- tensorflow - TensorFlow:整个训练过程中的 CosineDifference ObjFunc 常量
- reactjs - 固定表布局与更新的值不匹配 - reactjs
- c - 如何在c中解析tcp数据包有效负载
- excel - 遍历范围的VBA搜索
- angular - 错误:BrowserModule 已加载
- swift - 如何编写一些正则表达式来查找子域并在 Swift 中替换值
- html - 文章网格没有一直延伸到边缘
- javascript - 如果我想在 HTML 中显示这样的表格,我应该如何在 Firebase 实时数据库中设计我的表格?