我首先要确定集合的长度(即集合中有多少个文档?),然后随机抓取其中一个文档并在其中显示某些字段。
到目前为止,在我的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()));
}
但是我现在怎么说呢?我想要收藏中的第二个文档?如何将其与查询联系起来,这样我可以说我想要集合的第二个文档中的某个字段?
答案 0 :(得分:1)
Cloud Firestore中没有内置计数操作。要确定文档数量,您必须检索所有文档,或者保留一个单独的计数器。由于检索所有文档以确定数量非常浪费带宽,因此大多数开发人员会选择第二种方法,即在数据库的单独文档中实现一个counter字段,然后在每次添加/删除操作中对其进行更新。
在Firestore客户端SDK中,也没有任何操作可以使文档偏移一定距离。尽管服务器端Admin SDK确实提供了一种offset()
方法,但实际上,该方法可以读取您要其跳过的所有文档。因此,虽然可以节省这些文档的带宽,但仍会读取它们并按照您的配额收费。
要有效地从Firestore中检索随机文档,请在此处查看Dan的答案:Firestore: How to get random documents in a collection