首页 > 解决方案 > Firebase Cloud Firestore 设计

问题描述

我无法完成我正在开发的 android 应用程序的设计。我需要在三个主要组中存储数据;主持人、志愿者和活动。我遇到的问题是大多数活动将有不止一个志愿者,我不知道应该如何构建集合,以便我可以查询我的数据库以查找主持人创建的所有活动以及每个活动中的所有志愿者。

我目前有 3 个顶级收藏;主持人、志愿者和活动。但是,我想知道这是否实际上是解决此问题的最佳方法,并且有人可以解释如何使用这种设计为每个事件中的所有志愿者查询数据库。

如果这不是最好的方法,那么如果有人能解释另一种方法以及它是如何工作的,我将不胜感激。

标签: firebasegoogle-cloud-firestore

解决方案


我目前有 3 个顶级收藏

这是构建 Cloud Firestore 数据库的常用方法。

有人可以解释如何使用这种设计查询每个事件中所有志愿者的数据库。

一个可能的数据库结构可能是:

Firestore-root
  |
  --- volunteers (collection)
  |    |
  |    --- volunteerId (document)
  |          |
  |          --- //Volunteer properties
  |          |
  |          --- eventIds: ["generatedEventId", "generatedEventId"]
  |
  --- events (collection)
       |
       --- eventId (document)
             |
             --- //Event properties

如您所见,我在数组中添加了eventId作为值,因为 a可以参与多个事件。要获取每个活动中的所有志愿者,您可以使用以下查询:eventIdsvolunteer

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference volunteersRef = rootRef.collection("volunteers");
Query query = volunteersRef.whereArrayContains("eventIds", "generatedEventId");

其中generatedEventId是您参加的志愿者活动的 ID。

由于您没有为平台选择标签,因此我在 Android 中编写了上述代码行,但也可以简单地为其他编程语言编写。


推荐阅读