У меня есть коллекция документов на квартиру в Firestore, где идентификатор каждого документа - это дата в миллисекундах, в которую он был добавлен (чтобы они казались случайными).
Теперь мне нужно запросить эти квартиры на основецена (> или <чем выбирает пользователь). </p>
Приложение, имеющее интерфейс типа Tinder (3 карты в стеке), должно загружать одну квартиру за раз, когда пользователь проводит первую.
Поэтому я сохраняю идентификатор последней квартиры документа и запрашиваю цену с помощью запроса isGreaterThan и startAfter (lastId) и ограничиваю его одним документом.Однако startAfter также требует, чтобы orderBy находился в том же поле, что и запрос isGreaterThan.Но, как я уже говорил, мне нужно, чтобы они были случайными, а не упорядоченными по полю цены.
Есть ли другой способ «возобновить» запрос или запустить запрос после последнего идентификатора документа или даже позиции?
-
Моей первой мыслью было разделить цену на булеву карту.За исключением того, что у меня есть другие карты для запроса (например, расстояние или область), потому что фильтры диапазона работают только на 1 поле, однако для каждой комбинации требуется индекс (что приведет к тысячам индексов, а firestore устанавливает ограничение в 200 индексов).
Затем я попытался объединить идентификатор и цену в одном поле, но не смог найти способ разделить его и получить цену и идентификатор без загрузки всего документа, который был бы бесполезным и неэффективным (этото, что я пытаюсь избежать).
Фильтры диапазона не могут быть использованы для нескольких полей, поэтому здесь нечего делать.
Я знаю, что Firestore был построен быстро и масштабируемо, но яне думайте, что это очень сложный запрос.
Спасибо за ваше время.