我正在使用Firebase在Android上开发一个应该嵌入聊天的应用。
我的问题是要获取消息,我需要在发送方或接收方字段中查询具有我的uid的所有消息。这在MySQL中非常容易,但在Firebase中(我必须坚持使用Firebase)看起来有点痛苦。
我不能像那样过滤它们。在聊天对象的receiver
和sender
字段中,当我使用firebase.myapp.io/chat这样的Firebase网址时,我甚至无法过滤它们。
因此,此模型中唯一可行的解决方案是获取所有聊天并对客户端进行过滤。这是完成这项工作的好方法。此外,当消息很多时,如果它们应该,那么一切都会变得非常慢。
所以我想到了实现结果的不同方法:
但我不太喜欢这个,因为它可能非常多余,因为每条消息都应该在数据库中插入两次。
另一种方法是将消息密钥记忆到另一个对象中,比如chatmessages,内部我将用户uid作为值,以及包含聊天消息密钥的密钥。
管理多个私人聊天对话的最佳NoSQL方法是什么?
答案 0 :(得分:0)
我目前在创建聊天应用程序时遇到了同样的问题。我最近找到了一个解决方案:
1)我基本上使用了两个用户的唯一ID,并使用ID.getBytes()将它们转换为数字。
2)然后我将2个数字一个添加到另一个(添加)并再次将它们转换为base64数字。
3)使用结果数字作为聊天室的id。
它有效,但是因为我正在为Android应用程序做这一切,它向我显示一个警告,即在主线程上做了太多工作。 如果有人知道更好的方法,请告诉我!