Замените логику startAfter условием where в FireStore - PullRequest
0 голосов
/ 30 января 2019

У меня есть ниже запрос Firebase, чтобы получить значения после заданного ключа, для нумерации страниц.

Firestore.instance
.collection('uploads')
.where('active', isEqualTo: true)
.where('purge', isEqualTo: false)
.where('active_time', isLessThan: Timestamp.now())
.startAfter([lastKey])
.orderBy("active_time", descending: true)
.limit(count)
.getDocuments();

Я хочу заменить этот запрос другим подходом .. Вместо использования startAfter() Я хочуиспользуйте условие where для достижения того же эффекта.

Firestore.instance
.collection('uploads')
.where('active', isEqualTo: true)
.where('purge', isEqualTo: false)
.where('active_time', isLessThan: lastKey)
.orderBy("active_time", descending: true)
.limit(count)
.getDocuments();

Но я получаю 0 записей, хотя у меня больше записей.

Почему я пытаюсь это сделать?

Если я использую метод startAfter (), я получаю cursor position is outside the range of the original query ошибку.Я не мог найти решение этой проблемы.Поэтому я хочу попробовать другой подход, так как active_time - это поле метки времени, я хочу получить следующий набор старых записей на основе последнего полученного значения метки времени.

Я хотел бы устранить исключениеили используйте альтернативный подход для возврата данных.

PS: Это код дротика / флаттера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...