Я пытаюсь спроектировать структуру для приложения чата, включая личные сообщения и группы i, используя базу данных в реальном времени*
Users | |_USER1 | | | |__FRIENDS | |_USER2 | |__FRIENDS
Как правило, вы в конечном итоге моделируете "комнаты чата" в базе данных.Таким образом, каждый диалог (который пользователи могут видеть при запуске приложения) отображается в виде отдельного узла в каком-либо корневом списке.Возможно, вы захотите отделить основные метаданные каждого разговора от его реальных сообщений и его участников.
Итак:
Chats chat1 title: "...." lastUpdated: ... chat2 title: "...." lastUpdated: ... Messages chat1 message1: { ... } message2: { ... } chat2 message3: { ... } message3: { ... } Participants chat1 userid1: true userid2: true chat2 userid1: true userid3: true userid4: true userid5: true
Используя те же ключи (chat1, chat2)для узлов в каждом списке вы можете легко просматривать данные для полного чата, когда это необходимо.Но, сохраняя их в отдельных списках верхнего уровня, вы можете лучше защитить приложение и лучше контролировать объем загружаемых данных.
chat1
chat2
Также см .: