Структурирование данных для приложения чата в Firebase

Я следую за Firebase руководство поструктурирование данных для приложения чата. Они предлагают структуру, как показано ниже.

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

Как мне структурировать свои пользовательские данные так, чтобы я мог легко отобразить список всех чатов, частью которых они являются, и для каждого из них отобразить последнее сообщение и метку времени. Если я сделаю следующую структуру:

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

Я могу легко получить список каждой группы чата для конкретного пользователя, например, ghopper, выполнив (в swift):

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

Однако у меня не будет последнего сообщения и метки времени в этом снимке. Что мне нужно сделать, чтобы получить доступ к этим данным?

Дублировать все эти данные для каждого пользователя? то есть добавление пользователей / ghopper / chats / one / {"lastMessage": "ghopper: обнаружена неисправность реле. Причина: moth.", "timestamp": 1459361875666}Сделать запрос на "chats / specificGroupId" для каждого чата, в который входит пользователь (добавив несколько списков)?Как-то иначе?

Ответы на вопрос(2)

Ваш ответ на вопрос