从Firestore获取数据

时间:2020-06-22 14:00:46

标签: firebase flutter dart google-cloud-firestore

因此,我正在使用Firebase从Firestore检索数据,并且工作正常,但是现在为了节省金钱和资源,我使用了40个项目的限制,因此只有40个项目来自Firebase,但是现在用户到达列表的末尾,我希望用户能够从Firebase数据库中获取接下来的40个项目。那就是我不知道该怎么做。要获取接下来的40个项目,而不必从firebase中读取整个80个项目。

这是我的代码:

getCountryItems() async{
      QuerySnapshot snapshot = await userCountry
      .orderBy('timeStamp', descending: true)
      .limit(40) //getting only 40 items
      //.orderBy('likesCount', descending: true)
      .getDocuments();

      List<Items> countryPosts = snapshot.documents.map((doc) => Items.fromDocument(doc)).toList();
      setState(() {
        this.countryPosts = countryPosts;
      });
     }

这就是现在获取前40个项目的原因,我想仅在按下按钮之后才能获取40个项目:

FlatButton(
 onPressed: (){}//funtion to get the next 40 items 
);

1 个答案:

答案 0 :(得分:1)

参考:https://firebase.google.com/docs/firestore/query-data/query-cursors
使用startAfter将光标移到所需位置

getCountryItems(paginateAt = 0) async{
      QuerySnapshot snapshot = await userCountry
      .orderBy('timeStamp', descending: true)
      .startAfter(paginateAt)
      .limit(40) //getting only 40 items
      //.orderBy('likesCount', descending: true)
      .getDocuments();

      List<Items> countryPosts = snapshot.documents.map((doc) => Items.fromDocument(doc)).toList();
      setState(() {
        this.countryPosts = countryPosts;
      });
     }

FlatButton(
 onPressed: (){
   getCountryItems(this.countryPosts.last)
 }//funtion to get the next 40 items 
);