猿问

如何在java中轻松检索聊天应用程序的嵌套firebase实时数据库数据?

我写这封信,我需要检查,如果两个用户聊天应用程序u1,并u2有一个以前的对话或没有。如果有,则检索conversationId消息并将消息发送到该端点。否则,创建一个新对话。


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


userconversations:

    userId1:

        conversationID1:

            participants:

                user1: true

                user2: true

         conversationID2:

             participants:

                user1: true

                user7: true

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


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


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


请随时提出解决我的目的的替代模式设计。


杨__羊羊
浏览 191回答 1
1回答

斯蒂芬大帝

由于键user1,user2和user7是动态的,它们不能自动序列化为 POJO 的属性。您能做的最好的事情是使用 GenericTypeIndicator 或 cast:获得一个Map<String, boolean>from&nbsp;。participants(Map<String, boolean>)snapshot.child("participants").getValue()
随时随地看视频慕课网APP

相关分类

Python
我要回答