复制节点

时间:2019-06-24 18:37:07

标签: android firebase firebase-realtime-database

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

数据库结构:

enter image description here

每条消息由message组成,发送方的用户ID称为senderUid。如果我想显示一条消息以及发件人(imageUri)的图像,那么使用users查询senderUid节点是否最有效?还是可以在每个消息下添加imageUri,以便只需要查询message节点?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

  

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

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

  

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

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

但是,如果您考虑在某个时间点尝试使用Cloud Firestore,则可以在此处找到有关如何创建完整且实用的Firestore Chat App的教程。