android - 结合排序和过滤的好方法 - Firebase 实时数据库结构

标签 android firebase firebase-realtime-database

我正在为 Firebase 设置一个实时数据库,遇到了一个问题,这让我质疑我的数据库结构。我目前的结构如下:

{
"events": {
    $topics:{
        $eventID:{
            "title": "testTitle",
            "description": "testDescription",
            "startDateTime": "testStartDateTime",
            "lat": "testLat",
            "lng": "testLng",
            "voteCt": "testVoteCt"
        }
    }
}

这背后的想法是我可以轻松地根据主题过滤数据。我遇到的问题是当我想从按 startDateTime 排序的所有 $topics 中获取事件时。从我读过的内容来看,这个给定的结构是不可能的。如果不是这种情况,请有人纠正我。

或者,我考虑按如下方式组织我的 Activity :

{
"events": {
    $eventID:{
          "title": "testTitle",
          "description": "testDescription",
          "startDateTime": "testStartDateTime",
          "lat": "testLat",
          "lng": "testLng",
          "voteCt": "testVoteCt",
          "topic": "testTopic"
        }
}

通过这种方法,我可以在按 startDateTime 排序时聚合我的所有事件,但在按 startDateTime 排序时我也无法按主题过滤。我最后的希望只是让客户端读取所有事件(大量数据)并循环显示主题与应用过滤器匹配的事件。该解决方案有效,但做一些看起来如此简单的事情需要做很多工作。

有人能想出更好的解决方案吗?谢谢。

最佳答案

这个结构怎么样:

 "events": {
        $eventID:{
              "title": "testTitle",
              "description": "testDescription",
              "startDateTime": "testStartDateTime",
              "lat": "testLat",
              "lng": "testLng",
              "voteCt": "testVoteCt",
              "topic": "testTopic"
          }
  }

    "event_topic":{
           "testTopic1": {
                  "event_topic_id1":{
                       "event": "event id 1"
                      "startDateTime":"testStartDateTime"

                   }
           }
     }

现在,如果您想查询 testTopic1 并按 startDateTime 排序,只需监听 event_topic/testTopic1 并在 child_add 上按 startDateTime 对子项排序,对于每个 on child_add 事件,使用事件 ID 来查询事件详细信息。

关于android - 结合排序和过滤的好方法 - Firebase 实时数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882422/

相关文章:

android - 大数的 SHA256 哈希结果在 Android 和 iOS 上不同

java - 升级 Firebase 后 Android Unresolved 依赖关系

javascript - Angular Firebase 通过订阅监听 foreach 变化

java - Android:如何使用他的电话号码登录用户

带有 ContentProvider 和 BaaS 的 Android SQLite

java - Kotlin 中的 Firebase SDK - onChildChanged 未触发列表中的第一个 child

java - 是否可以从同一个 SQLite 数据库中检索文本和图像

android - 尽管实现了 doOnError,但 RxAndroid 使应用程序崩溃

android - 为什么 View 行未显示在 item.xml 中

json - 如何最好地使用 Go 使用 FCM/GCM 发送复杂数据