Обходной путь оператора Google Cloud Firestore "в" - PullRequest
0 голосов
/ 25 мая 2020

Я использую Google Cloud Firestore в качестве базы данных для приложения Flutter. Мой код требует, чтобы я сделал запрос, содержащий '.where («X», «in», «очень-длинный-список») »к базе данных. Возникает проблема: оператор in может объединить не более 10 предложений о равенстве, в то время как мой список имеет переменную длину, которая может оказаться значительно больше 10. Я ищу возможное решение проблемы.

Пример утверждения:

citiesRef.where("state", "in", "[list-of-1000]");

Изменить: чтобы дать дополнительный контекст, мой проект представляет собой приложение для социальных сетей, где у пользователей есть друзья. База данных должна быть реструктурирована таким образом, чтобы пользовательский документ содержал подколлекцию «друзей» с документом, содержащим их идентификатор пользователя. Пользовательский документ также имеет коллекцию постов со ссылками на хронологически упорядоченную коллекцию постов. В коллекции сообщений каждый почтовый документ имеет документ, содержащий их UID. Чтобы создать фид пользователя, необходимо указать и отфильтровать коллекцию сообщений с помощью '.where ["UID", "in", ["List-of_friend-UIDs"])'. Если вам известна структура получше, я готов реструктурировать свою базу данных.

1 Ответ

2 голосов
/ 25 мая 2020

Если вы должны использовать более 10 элементов во входящем запросе, вам нужно будет разбить его на более мелкие списки по 10, выполнить 1 запрос для каждого пакета из 10 и объединить результаты.

...