角度的Firestore分页

Posted

技术标签:

【中文标题】角度的Firestore分页【英文标题】:Firestore pagination in angular 【发布时间】:2018-06-11 10:00:22 【问题描述】:

我正在尝试对我的页面进行分页。

网站网址:https://pettemm.github.io/angular/home

代码网址:https://github.com/pettemm/angular

这是抓取我的物品的服务:

import  Injectable  from '@angular/core';
import  AngularFirestore, AngularFirestoreCollection, 
AngularFirestoreDocument  from 'angularfire2/firestore';
import  Observable  from 'rxjs/Observable';
import  Item  from '../models/item';


    @Injectable()
    export class ItemService 

    itemsCollection: AngularFirestoreCollection<Item>;
    items: Observable<Item[]>;
    itemDoc: AngularFirestoreDocument<Item>;

    constructor(public afs: AngularFirestore)  

    this.itemsCollection = this.afs.collection('items', ref => 
    ref.orderBy('title','desc'));

this.items = this.itemsCollection.snapshotChanges().map(changes => 
return changes.map(a =>
  const data = a.payload.doc.data() as Item;
  data.id = a.payload.doc.id;
  return data;
  );
);


getItems()
return this.items;    
   

这是我的组件:

   import  Component, OnInit  from '@angular/core';
   import  ItemService  from '../../services/item.service';
   import  Item  from '../../models/item';

   @Component(
   selector: 'app-items',
   templateUrl: './items.component.html',
   styleUrls: ['./items.component.css']
   )


    export class ItemsComponent implements OnInit 
    items: Item[];
    editState: boolean = false;
    itemToEdit: Item;

    constructor(private itemService: ItemService)  

    ngOnInit() 
    this.itemService.getItems().subscribe(items =>      
    this.items = items;
    );
    

在首页上,我正在使用 firebase,我想分页,所以我只有 2 个项目,然后您可以单击下一步以显示其他两个项目。我知道 startAt 和 endAt,但不知道如何使用它。

另一方面,我正在使用 Firestore。当我在 home 和 mat 之间切换并再次返回 home 时,项目不会更新,为什么?

【问题讨论】:

【参考方案1】:

你必须在你的订单之后去做

 this.itemsCollection = this.afs.collection('items', ref => 
        ref.orderBy('title','desc').starAt(x).endAt(x);

 this.itemsCollection = this.afs.collection('items', ref => 
    ref.orderBy('title','desc').endAt(x);

其中X 是项目的索引

【讨论】:

以上是关于角度的Firestore分页的主要内容,如果未能解决你的问题,请参考以下文章

Firestore 分页问题

Firestore 分页数据 + 快照监听器

Firestore 分页 - 是不是有任何与 firebase 的 limitToLast 兼容的查询?

Firestore分页与FirestoreRecyclerAdapter(Android)[重复]

如何使用 Android 对 Firestore 进行分页?

使用streambuilder颤动firestore分页