我写这封信,我需要检查,如果两个用户聊天应用程序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 次对话,这将非常缓慢且占用大量资源。请随时提出解决我的目的的替代模式设计。
1 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
由于键user1
,user2
和user7
是动态的,它们不能自动序列化为 POJO 的属性。您能做的最好的事情是使用 GenericTypeIndicator 或 cast:获得一个Map<String, boolean>
from 。participants
(Map<String, boolean>)snapshot.child("participants").getValue()
添加回答
举报
0/150
提交
取消