【问题标题】:How to easily retrieve nested firebase realtime database data for a chat app in java?如何在java中轻松检索聊天应用程序的嵌套firebase实时数据库数据?
【发布时间】:2018-10-17 20:51:35
【问题描述】:

我正在编写一个聊天应用程序,我需要在其中检查两个用户 u1u2 之前是否进行过对话。如果有,则检索conversationId 并将消息发送到该端点。否则,请创建一个新对话。

我的数据结构看起来像这样。

userconversations:
    userId1:
        conversationID1:
            participants:
                user1: true
                user2: true
         conversationID2:
             participants:
                user1: true
                user7: true

在我的应用程序中,我想读取来自 userconversations/userId1 的所有数据并遍历列表以确定 user2 是否是对话的一部分。

我的问题是如何设计我的类,以便我快速反序列化这些数据并避免使用getChildren() 调用对其进行迭代?

如果我规范化数据并保持不同的conversationId -> participants 映射,那么对于每个对话ID,我将不得不查询该流以获取数据。假设一个用户可以进行 100 个对话,这将非常缓慢且占用大量资源。

请随意提出可以解决我的目的的替代架构设计。

【问题讨论】:

    标签: java firebase firebase-realtime-database chat


    【解决方案1】:

    由于键 user1user2user7 是动态的,它们不能自动序列化为 POJO 的属性。您能做的最好的事情是从 participants 获得一个带有 GenericTypeIndicator 或演员表的 Map<String, boolean>(Map<String, boolean>)snapshot.child("participants").getValue()

    【讨论】:

    • 嗨弗兰克。感谢你的回答。我会试试这个。
    猜你喜欢
    • 2019-09-10
    • 2017-11-16
    • 2019-02-23
    • 2022-11-02
    • 2020-06-13
    • 2021-07-26
    • 2023-04-04
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多