Лучший обходной путь для ограничения Firestore фильтра диапазона и orderBy в том же поле - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь реализовать разбиение на страницы, фильтруя документы по дате истечения срока действия и упорядочивая их по дате создания. Как вы, возможно, знаете, Cloud Firestore имеет ограничение: фильтр диапазона и orderBy должны находиться в одном поле. Итак, мой код ниже явно недействителен:

posts
  .where("expiredAt", ">", firebase.firestore.FieldValue.serverTimestamp())
  .orderBy("createdAt", "desc")
  .startAt(date)
  .limit(10);

Я знаю, что здесь об этом спрашивали и на него ответили несколько раз. Однако решения, предложенные командой Firebase или другими, не являются удовлетворительными и эффективными. Фильтрация / упорядочение на стороне клиента - не лучший вариант для больших приложений. Кроме того, большинство людей хотят, чтобы количество запросов и загрузка данных были как можно меньше.

В моем случае я должен пропустить документы с истекшим сроком действия и сначала показать последние созданные документы. Я также должен разбить данные на страницы, чтобы избежать ненужного чтения. У кого-нибудь была подобная проблема и он выяснил, что это отличается от того, что уже было сказано?

...