我正在使用Firebase Realtime DB和云功能开发聊天应用程序。关于数据库的结构以及如何检索Chat
所属的User
节点,我遇到了问题。我的数据库具有以下结构
{
"chats" : {
"chatId1" : {
"lastMessage" : "example of last message",
"timestamp" : "11111"
},
"chatId2" : {
"lastMessage" : "generic last message",
"timestamp" : "22222"
}
},
"members" : {
"chatId1" : {
"uid1" : true,
"uid2" : true
},
"chatId2" : {
"uid1" : true,
"uid3" : true
}
},
"users" : {
"uid1" : {
"name" : "UserName1"
},
"uid2" : {
"name" : "UserName2"
},
"uid3" : {
"name" : "UserName3"
}
}
}
目前,我已经找到了以下解决方案:https://stackoverflow.com/a/37579607/7403707,这建议在每个users
子下添加一个/chats
子节点并执行深度查询。但是在阅读了文档并观看了一些视频之后,我发现这并不是最佳选择,因为它会下载整棵树。我想到的另一件事是创建一个名为/userChats
的单独节点,该节点具有以下结构:
{
"userChats" : {
"uid1" : {
"chatId1" : true,
"chatId2" : true
},
"uid2" : {
"chatId1" : true
},
"uid3" : {
"chatId3" : true
}
}
}
并执行以下操作:
/userChats
获取特定用户(例如,具有id = uid1 的用户)的所有键( chatIds )。Chat
类型。Chat
对象存储在Array
中。recyclerView
适配器。您有什么建议?希望,如果可能的话,我希望使其与Firebase RecyclerView
一起使用。谢谢。