我正在写一个聊天应用程序,我需要检查两个用户u1
和u2
之前是否有过对话。如果有,则检索conversationId
并将消息发送到该端点。否则,创建一个新对话。
我的数据结构看起来像这样。
userconversations:
userId1:
conversationID1:
participants:
user1: true
user2: true
conversationID2:
participants:
user1: true
user7: true
在我的应用程序中,我希望读取userconversations/userId1
中的所有数据并遍历列表,以确定user2
是否是对话的一部分。
我的问题是,如何设计我的类,以便快速反序列化此数据,并避免使用 getChildren()
调用迭代它?
如果我规范化数据并保留不同的conversationId -> participants
映射,那么对于每个会话i,我将必须查询该流以获取数据。假设一个用户有100个会话,这将是非常慢和资源密集型的。
请随时建议替代方案设计,以解决我的目的。
发布于 2018-10-18 06:33:45
因为键user1
、user2
和user7
是动态的,所以它们不能自动序列化到POJO的属性中。您能做的最好的事情就是从participants
获取一个带有GenericTypeIndicator或cast:(Map<String, boolean>)snapshot.child("participants").getValue()
的Map<String, boolean>
。
https://stackoverflow.com/questions/52863426
复制相似问题