Estructurar datos para la aplicación de chat en Firebase

Estoy siguiendo la guía de Firebase paraestructurar datos para una aplicación de chat. Sugieren la estructura como se ve a continuación.

{
  // 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": { ... }
  }
}

¿Cómo estructuro mis datos de usuario para que pueda mostrar fácilmente una lista de todos los chats de los que forman parte y para cada uno de ellos mostrar el último mensaje y marca de tiempo? Si hago la siguiente estructura:

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

Puedo obtener fácilmente una lista de cada grupo de chat para un usuario específico, por ejemplo ghopper, haciendo (en forma rápida):

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

Sin embargo, no tendré el último mensaje y la marca de tiempo en esta instantánea. ¿Qué debo hacer para acceder a estos datos?

¿Duplicar todos estos datos para cada usuario? es decir, agregar usuarios / ghopper / chats / one / {"lastMessage": "ghopper: Se encontró un mal funcionamiento del relé. Causa: polilla", "marca de tiempo": 1459361875666}¿Hacer una consulta para "chats / specificGroupId" para cada chat del que forma parte el usuario (agregando múltiples listados)?De otra manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta