AngularFire 2 - список базы данных в реальном времени не правильно разбит на страницы - PullRequest
0 голосов
/ 11 февраля 2019

Tech : Angular версия 7, AngularFire2 версия 5, база данных Firebase в реальном времени.

Я ищу разбиение таблицы размером 5000 результатов в одной из моих таблиц Firebase.

В качестве тестового примера я хочу разбить на страницы результаты размером 2 на страницу.

Текущая попытка (но решение устарело и не работает):

public getFirstPage(): Observable<any> {
    const query = this.angularFireDatabase.list('test', ref =>
      ref
        .orderByChild('description')
        .limitToFirst(2)
    );

    return from(super.getList(query)
      .pipe(
        map(data => {
          return {
            firstItem: data[0],
            lastItem: data[1],
            jobs: data
          };
        })
      ));
  }

  public getNextPage(lastItem): Observable<any> {
    const query = this.angularFireDatabase.list('test', ref =>
      ref
        .orderByChild('description')
        .startAt(lastItem.description, lastItem.key)
        .limitToFirst(2)
      );

    return from(super.getList(query)
      .pipe(
        map(data => {
          return {
            firstItem: data[0],
            lastItem: data[1],
            jobs: data
          };
        })
      ));
  }

  public getPrevPage(firstItem): Observable<any> {
    const query = this.angularFireDatabase.list('adzuna', ref =>
      ref
        .orderByChild('description')
        .endAt(firstItem.description, firstItem.key)
        .limitToFirst(2)
      );

    return from(super.getList(query)
      .pipe(
        map(data => {
          return {
            firstItem: data[0],
            lastItem: data[1],
            jobs: data
          };
        })
      ));
  }

Проблема:

Метод getPrevPage перезапускает список, например, переводит пользователя на первые два элемента, а не на два последних.

И

Метод getNextPage всегда показывает сначала один из предыдущих элементов, а затем один новый.

Почти работает.

...