Эти подходы являются базовыми 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
}
}