Estruturando dados para o aplicativo de bate-papo no Firebase

Estou seguindo o guia Firebase paraestruturação de dados para um aplicativo de bate-papo. Eles sugerem a estrutura como visto abaixo.

{
  // Chats contains only meta info about each conversation
  // stored under the chats's unique ID
  "chats": {
    "one": {
      "title": "Historical Tech Pioneers",
      "lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
      "timestamp": 1459361875666
    },
    "two": { ... },
    "three": { ... }
  },

  // Conversation members are easily accessible
  // and stored by chat conversation ID
  "members": {
    // we'll talk about indices like this below
    "one": {
      "ghopper": true,
      "alovelace": true,
      "eclarke": true
    },
    "two": { ... },
    "three": { ... }
  },

  // Messages are separate from data we may want to iterate quickly
  // but still easily paginated and queried, and organized by chat
  // converation ID
  "messages": {
    "one": {
      "m1": {
        "name": "eclarke",
        "message": "The relay seems to be malfunctioning.",
        "timestamp": 1459361875337
      },
      "m2": { ... },
      "m3": { ... }
    },
    "two": { ... },
    "three": { ... }
  }
}

Como estruturo meus dados de usuário para que eu possa exibir facilmente uma lista de todos os chats dos quais eles fazem parte e para cada um deles exibir a última mensagem e o carimbo de data / hora. Se eu fizer a seguinte estrutura:

   "users": {
    "ghopper": {
      "name": "Gary Hopper",
      "chats": {
          "one: true",
          "two": true
      }
    },
    "alovelace" { ... }
  },

Eu posso facilmente obter uma lista de cada grupo de bate-papo para um usuário específico, por exemplo, ghopper, fazendo (rapidamente):

ref.child("users").child("ghopper").child("chats").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
  //do something with data
}

No entanto, não terei o lastMessage e o carimbo de data e hora neste instantâneo. O que preciso fazer para acessar esses dados?

Duplicar todos esses dados para cada usuário? ou seja, adicionando users / ghopper / chats / one / {"lastMessage": "ghopper: mau funcionamento do relé encontrado. Causa: mariposa.", "timestamp": 1459361875666}Faça uma consulta para "chats / specificGroupId" para cada bate-papo do qual o usuário faz parte (adicionando vários ouvintes)?De alguma outra maneira?

questionAnswers(2)

yourAnswerToTheQuestion