Firestore + AngularFire как разбить на страницы - PullRequest
0 голосов
/ 07 января 2019

Извините, я видел, что этот вопрос задавали здесь много раз по-разному, например:

Но ни один из ответов действительно не объясняет решение или не понятен.

Также я прошел много уроков, таких как:

К деталям:

Итак, вот что я сделал до сих пор

let query = ref.orderBy(orderBy, asc ? 'asc' : 'desc').limit(limit);
        if (startAfter) {
          // Thiis works as it should
          query = query.startAfter(startAfter);
        }
        if (endBefore) {
          // This here does not work or give the correct results. I get the first page. 
          query = query.endBefore(endBefore);
        }
        return query;

Итак:

query = query.startAfter(startAfter); работает как положено.

Однако:

query = query.endBefore(endBefore) не заканчивается до того документа, я думаю, что он заканчивается до предела.

1 Ответ

0 голосов
/ 07 января 2019

Так что я думаю, что решил это комментарием, вдохновленным упомянутой выше проблемой github:

Предположим, у вас есть этот массив и вы сортируете по возрастанию

A,
B, 
C,
D,
E,
F, 

И у вас есть страница 2 результатов

Тогда, когда вы находитесь на третьей странице, вы должны иметь

E,
F

Теперь вам нужно перейти на предыдущую страницу и сделать следующее:

  1. Обратный порядок сортировки и наши данные должны быть [F,E,D,C,B,A]
  2. startAfter первый документ просматриваемой страницы (в нашем случае E)
  3. Запросите пожарный магазин, чтобы получить результаты (например, с вашим лимитом 2). Вы должны получить в обратном порядке и начиная с E, то есть [D,C]
  4. Переверните вышеуказанный массив, чтобы он был [C,D]
  5. Готово
...