如何根据Dart / Flutter中的日期从Firebase / Firestore集合中检索1个文档?

时间:2019-05-26 16:13:28

标签: firebase collections flutter dart google-cloud-firestore

Ofc,我知道从这样的集合中检索一堆文档的基本方法:

      stream: Firestore.instance
          .collection("collection_name")
          .orderBy("date", descending: true) // new entries first
          .snapshots(),
      builder: (context, snapshot) { ....

当我显示一大堆数据时,这很好。

但是我遇到的情况是我需要对最后添加的数字进行一些计算,这意味着我只需要获取1个文档,所以我要做的是按日期对数据进行排序,并按1进行限制,然后对此查询一份这样的文件

List<DocumentSnapshot> list;
    QuerySnapshot querySnapshots;
    if (await AuthHelper.checkIfUserIsLoggedIn()) {
      String userId = await AuthHelper.getUserID();
      querySnapshots = await Firestore.instance
          .collection("collection_name")
          .orderBy("date", descending: true) // new entries first, date is one the entries btw
          .limit(1)
          .getDocuments(); // Get Documents not as a stream
      list = querySnapshots.documents; // Make snapshots into a list
      return (list ?? null);
    } else {
      return null;
    }

但这是最好的方法吗?进行此查询时,我是否不获取全部文档并丢弃其余文档?这意味着当这些集合增长时,它会变得越来越慢?

是否有更好的方法来检索最后添加的文档?所以我可以将其用作列表/数组/地图而不是流?

谢谢。

1 个答案:

答案 0 :(得分:1)

当您限制查询时,您只会读取最大数量的 个文档。它不会读取整个集合并丢弃多余的内容。