Я создаю частный чат для своего приложения. В качестве серверной части я выбрал Firestore, и ниже показано, как структурированы потоки чата и сообщения.
privateChats — chatId1 — chatId1 — messageId1, messageId2,…
collection — document — collection — documents
вот скриншот
Я пытаюсь получить снимки всех потоков чата (chatId1, chatId2, …) с их соответствующим сообщением (последний документ / сообщение было отправлено) и отображать их, как показано ниже — см. Экран чата
Я пробовал что-то подобное databaseRef.collection(‘privateChats’).where(‘chatId’, whereIn: chatList).snapshots(); Однако потоки, которые возвращаются из приведенных выше снимков, отслеживают изменения только в тех полях, где существует поле createdAt.
Это дает мне единственную возможность получить индивидуальный снимок для каждого потока чата, подобного этому databaseRef.collection(‘privateChats’).doc(‘chatId1).collection(‘chatId1).snapshots(); databaseRef.collection(‘privateChats’).doc(‘chatId2).collection(‘chatId2).snapshots();, и каким-то образом объединить эти снимки в единый поток (я не знаю как)
Итак, мой вопрос: есть ли способ получить снимки каждого потока чата с помощью всего одного запроса при заданном списке идентификаторов чата? Если нет, то какое решение? Стоит ли мне придумать другую структуру облачного хранилища пожаров? Спасибо,
Источник: