Firestore: проблема в структурировании приложения чата - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать приложение для чата, но проблема в том, что я не знаю, как установить соединение между двумя пользователями. Я сделал то, что есть коллекция пользователей, внутри этой коллекции есть некоторые пользователи, у которых есть коллекция друзей, которых пользователь может добавить, поэтому мне удалось позволить пользователю ввести адрес электронной почты друга и найти его в коллекцию пользователей, но я не мог установить соединение между пользователем и его другом в чате, я думал о создании коллекции чата для каждого пользователя, но я думаю, что это не будет эффективно и все равно не могу поделиться тем же Коллекция между двумя пользователями, есть идеи, как ее правильно структурировать?

Заранее благодарим за любую помощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 19 июня 2020

Эти подходы являются базовыми c для чатов на базе Firestore

  • Подход к сбору сообщений : chats\{chatID}\messages\{messageID} с использованием вложенных коллекций, но требует уникального чтения для каждого сообщения размер каждого сообщения ограничен 1 МБ.

  • Подход со встроенным документом : chats\{chatID}.messages[] создать только один документ для каждой комнаты чата, но это приведет к ограничение в 1 МБ на документ

Я рекомендую прочитать вариант использования этого примера , чтобы получить больше идей для вашей реализации и как справиться с ограничением в 1 МБ.

В этом примере предлагается использовать объединения для поиска комнаты чата, но это добавит сложности базе данных, этот ответ в комментариях к вашему вопросу использует следующий подход для генерации и передачи идентификатора комнаты .

Используйте идентификаторы пользователей и объедините их, чтобы сгенерировать идентификатор комнаты, этот подход может использовать список друзей для поиска и генерации идентификатора комнаты

Это предложение кода sed для создания идентификатора комнаты

var chatID = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);

Пример списка друзей:

{

    userid:"user1",
    "friendlist"{

    "user2":"chat_user1_user2" \\result of previous code
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...