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 всегда показывает сначала один из предыдущих элементов, а затем один новый.
Почти работает.