Android 复制节点

Android 复制节点,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,在我的聊天应用程序中,我有用户和消息 数据库结构: 每条消息由一条消息和名为senderUid的发送者的用户ID组成。如果我想显示一条消息以及发送者的图像(imageUri),那么使用senderUid查询users节点是否最有效?或者我可以在每条消息下添加imageUri,这样我只需要查询message节点吗?您可以将图像uri保存在message节点中,而无需进行另一次查询。这将降低时间复杂度,并为会话页面中的每条消息减少另一个循环 您可以将图像uri保存在消息节点中,而无需进行其他查询。

在我的聊天应用程序中,我有
用户
消息

数据库结构:


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

您可以将图像uri保存在message节点中,而无需进行另一次查询。这将降低时间复杂度,并为会话页面中的每条消息减少另一个循环

您可以将图像uri保存在消息节点中,而无需进行其他查询。这将降低时间复杂度,并为会话页面中的每条消息减少另一个循环

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

如果要使用实际的数据库结构显示发件人的邮件及其图像,则需要查询两次。第一次需要查询以从消息对象获取uid,第二次需要基于
uid
中的
users
节点来查询图像url。这意味着一个嵌套查询,但在Firebase中不会有问题

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

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

但是,如果你考虑在某个时间点尝试使用,在这里你可以找到一个关于如何创建一个完整的和功能性的教程。

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

如果要使用实际的数据库结构显示发件人的邮件及其图像,则需要查询两次。第一次需要查询以从消息对象获取uid,第二次需要基于
uid
中的
users
节点来查询图像url。这意味着一个嵌套查询,但在Firebase中不会有问题

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

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

但是,如果你考虑在某个时间点尝试使用,在这里你可以找到一个关于如何创建一个完整的和功能性的教程。