【发布时间】:2018-10-17 20:51:35
【问题描述】:
我正在编写一个聊天应用程序,我需要在其中检查两个用户 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 个对话,这将非常缓慢且占用大量资源。
请随意提出可以解决我的目的的替代架构设计。
【问题讨论】:
标签: java firebase firebase-realtime-database chat