使用Flutter访问Firestore中的第n个文档

时间:2019-05-11 10:45:58

标签: firebase dart flutter google-cloud-firestore

我首先要确定集合的长度(即集合中有多少个文档?),然后随机抓取其中一个文档并在其中显示某些字段。

到目前为止,在我的Scaffold中,我有以下StreamBuilder

 StreamBuilder(
          stream: _wordsFoods.snapshots(),
          builder: (context, snapshot){
            return _buildList(context, snapshot.data.documents);
      }
)

_buildList返回集合“ words”的长度:

Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot)  {
    return Center(child: Text(snapshot.length.toString()));
  }

但是我现在怎么说呢?我想要收藏中的第二个文档?如何将其与查询联系起来,这样我可以说我想要集合的第二个文档中的某个字段?

1 个答案:

答案 0 :(得分:1)

Cloud Firestore中没有内置计数操作。要确定文档数量,您必须检索所有文档,或者保留一个单独的计数器。由于检索所有文档以确定数量非常浪费带宽,因此大多数开发人员会选择第二种方法,即在数据库的单独文档中实现一个counter字段,然后在每次添加/删除操作中对其进行更新。

在Firestore客户端SDK中,也没有任何操作可以使文档偏移一定距离。尽管服务器端Admin SDK确实提供了一种offset()方法,但实际上,该方法可以读取您要其跳过的所有文档。因此,虽然可以节省这些文档的带宽,但仍会读取它们并按照您的配额收费。

要有效地从Firestore中检索随机文档,请在此处查看Dan的答案:Firestore: How to get random documents in a collection