firebase聊天应用程序:查询消息,优化应该是或的查询,或者改进nosql数据库结构

ibps3vxo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(286)

我正在用firebase在android上开发一个应用程序,它应该嵌入聊天。
我的问题是,要获取消息,我需要查询所有在sender或receiver字段中有我的uid的消息。这在mysql中是非常容易做到的,但是在firebase中(我必须坚持firebase)看起来有点痛苦。
我不能就这样过滤它们。和存在 receiver 以及 sender 当我使用firebase.myapp.io/chat这样的firebase url时,我甚至不能过滤它们。

因此,在这个模型中,唯一可能的解决方案是获取所有聊天记录并对其进行客户端过滤。这几乎是做这项工作的好方法。而且,当信息很多的时候,如果他们需要的话,一切都会变得非常缓慢。
所以我想了不同的方法来达到这个结果:
我进入聊天室的钥匙对应的用户uid。在这些值中,我从用户的Angular 获取聊天信息,或者我将接收者的键作为值,并在消息中
但是我不太喜欢这个,因为它可能是非常冗余的,因为每个消息都应该在db中插入两次。
另一种方法是将消息键存储到另一个对象中,比如chatmessages,在其中我将用户uid作为值,作为包含聊天消息键的键。
管理多个私人聊天对话的最佳nosql方式是什么?

u0sqgete

u0sqgete1#

我目前有一个聊天应用程序创建相同的问题。我最近找到了一个解决方案:
1) 我基本上使用了两个用户的唯一id,并使用id.getbytes()将它们转换为一个数字。
2) 然后我将这两个数字一个加到另一个(加法),并再次将它们转换为base64数字。
3) 将生成的号码用作聊天室的id。
它的工作,但因为我做了所有的android应用程序,它向我显示了一个警告,我在主线程上做了太多的工作。如果有人知道更好的方法,请告诉我!

相关问题