在我的聊天应用程序中,我有users
和message
。
数据库结构:
每条消息由message
组成,发送方的用户ID称为senderUid
。如果我想显示一条消息以及发件人(imageUri
)的图像,那么使用users
查询senderUid
节点是否最有效?还是可以在每个消息下添加imageUri
,以便只需要查询message
节点?
答案 0 :(得分:1)
您可以将图像uri保存在消息节点中,而不用进行其他查询。这将减少时间复杂度,并减少对话页面中每条消息的另一个循环。
答案 1 :(得分:1)
如果我想显示一条消息以及发送者的图像(imageUri),那么使用senderUid查询用户节点是否最有效?
如果要使用实际数据库结构显示发件人的消息及其图像,则需要查询两次。第一次,您需要查询以从消息对象获取uid,其次,您应该基于users
查询uid
节点,以获取图像URL。这意味着嵌套查询,但是对于Firebase来说不会有问题。
还是可以在每条消息下添加imageUri,这样我只需要查询消息节点?
以与添加发件人uid
相同的方式,您还可以添加图片网址。在这种情况下,您将减少执行的查询数量,但会增加消息对象的大小。同样,对于Firebase,这将不是问题。因此,我建议您继续使用此解决方案。
但是,如果您考虑在某个时间点尝试使用Cloud Firestore,则可以在此处找到有关如何创建完整且实用的Firestore Chat App的教程。