首页 > 解决方案 > 复制节点

问题描述

在我的聊天应用程序中,我有usersmessage.

数据库结构:

在此处输入图像描述

每条消息都包含 amessage和发送者的用户 ID,称为senderUid。如果我想显示一条消息以及发送者的图像 ( imageUri),那么users使用 查询节点是否最有效senderUid?或者我可以imageUri在每条消息下添加,这样我只需要查询message节点吗?

标签: androidfirebasefirebase-realtime-database

解决方案


如果我想显示一条消息以及发送者的图像 (imageUri),那么使用 senderUid 查询用户节点是否最有效?

如果要显示发件人的消息和他的图像,使用您的实际数据库结构,您需要查询两次。第一次您需要查询以从消息对象中获取 uid,第二次您应该查询users基于 , 的节点uid以获取图像 url。这意味着嵌套查询,但在 Firebase 的情况下不会成为问题。

或者我可以在每条消息下添加 imageUri,这样我只需要查询消息节点吗?

以与添加uid发件人相同的方式,您还可以添加图像 url。在这种情况下,您将减少执行的查询数量,但会增加消息对象的大小。同样,这对于 Firebase 来说不是问题。因此,我建议您继续使用此解决方案。

但是,如果您考虑在某个时间点尝试使用Cloud Firestore,您可以在此处找到有关如何创建完整且功能齐全的Firestore 聊天应用程序的教程。


推荐阅读