【问题标题】:Fetch specific subnode data from a node (Firebase, Swift)从节点获取特定的子节点数据(Firebase、Swift)
【发布时间】:2018-08-06 18:48:31
【问题描述】:
我有一个对话节点,其中包含简单的子节点,例如 displayMessage 和 conversationName,还有更大的子节点,例如保存对话中发送的所有消息的信息的消息。有没有办法只观察来自特定子节点的数据,因为我想获取 imageUrl、name 和 displayMessage 上的数据,但我不希望它获取所有消息的数据,因为有一个巨大的消息列表会不必要消耗大量数据。
【问题讨论】:
标签:
swift
firebase
firebase-realtime-database
【解决方案1】:
虽然 Firebase 数据库允许您在一个分支中混合各种类型的内容,但如果您在一个分支中有多个实体类型,这通常是一种反模式。
在您的示例 JSON 中,我看到了三种主要数据类型:
- 对话的消息
- 对话的元数据
- 对话的成员
通常,您应该在三个单独的顶级列表中对它们进行建模,其中每个列表具有相同的子键(对话 ID),然后是每个对话的该类型的特定数据。
conversations
conversation1: { conversationName: "", displayMessage: "",lastMessageTime: 1532968664.3149939 }
conversation2: { conversationName: "", displayMessage: "" }
members
conversation1: { ... }
conversation2: { ... }
messages
conversation1: {
"-Llg...": { ... },
"DBC972...": { ... }
}
conversation2: { ... }