Нумерация страниц в Cloud Firestore - PullRequest
0 голосов
/ 13 февраля 2019

Как я могу разбить данные на страницы, если не работает DocumentSnapshot для startAt или startAfter.

В Интернете вы можете просто использовать следующие :

const first = db.collection('cities').orderBy('population').limit(25)

first.get().then(function (documentSnapshots) {
  // Get the last visible document.
  const lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1]

  // Construct a new query starting at this document, get the next 25 cities.
  const next = db.collection('cities').orderBy('population').startAfter(lastVisible).limit(25)
})

Смотри также: https://github.com/flutter/flutter/issues/21017

1 Ответ

0 голосов
/ 13 февраля 2019

Обходного пути для этого больше нет, поскольку Cloud Firestore удалил эту функцию, т.е. вы не можете больше использовать orderBy(FieldPath.documentID()).

В настоящее время вы не можете использовать DocumentSnapshot в качестве параметра.
Однако вы можете просто использовать конкретное значение .В этом примере это будет номер population из документа lastVisible:

final db = Firestore.instance;    

db.collection('cities').orderBy('population').limit(25).getDocuments().then((querySnapshot) {
      final lastVisible = snapshot.documents.last;

      // Construct a new query starting at the last document, get the next 25 cities.
      final next = db.collection('cities').orderBy('population')
          .startAfter([lastVisible.data['population']]).limit(25);
    });

Если у вас есть поля с одинаковыми значениями, вы можете упорядочить по идентификаторам документов, используя следующую логику:

.orderBy(...).orderBy('__name__').startAfter([..., lastVisible.documentId])

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