【问题标题】: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 中,我看到了三种主要数据类型:

    1. 对话的消息
    2. 对话的元数据
    3. 对话的成员

    通常,您应该在三个单独的顶级列表中对它们进行建模,其中每个列表具有相同的子键(对话 ID),然后是每个对话的该类型的特定数据。

    conversations
      conversation1: { conversationName: "", displayMessage: "",lastMessageTime: 1532968664.3149939 }
      conversation2: { conversationName: "", displayMessage: "" }
    members
      conversation1: { ... }
      conversation2: { ... }
    messages
      conversation1: { 
        "-Llg...": { ... },
        "DBC972...": { ... }
      }
      conversation2: { ... }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多