【发布时间】:2020-09-26 13:05:10
【问题描述】:
场景解释: 使用:import 'package:cloud_firestore/cloud_firestore.dart';
云防火墙: 一个集合“sessionsLog”,包含具有以下字段的文档: 'sessionId' 一个字符串 'isClosed' 一个布尔值 'locationId' 一个字符串和一些其他字段...
我想检索所有带有 false bool 的“isClosed”文档,只检索一次,然后执行一些操作。因此我选择使用 FutureBuilder(而不是 streambuilder),我做了什么:
FutureBuilder(
future: Firestore.instance.collection('sessionsLog')
.where('isClosed', isEqualTo: false).getDocuments();
builder: (ctx, sessionSnapshot) {
return RaisedButton(
child: Text('Search'),
onPressed: () async {
//some other code here, that needs async I added on top
if (sessionSnapshot.connectionState !=
ConnectionState.done) {
return CircularProgressIndicator();
}
if (!sessionSnapshot.hasData) {i should
print('nothing to show here');
}else {
//the below line of code is wrong, it could be print / or Text / or any other widget
//I've just added it for the sake of an example.
print(sessionSnapshot.data.documents[0]['parkingLocationName']);}});}),
上面的代码不起作用,我只是为一个简单的代码结果创建它,以便能够打印我正在检索的值,所以请不要在我的代码中修复某些内容。
还要注意,在我的代码逻辑中,总会有一个带有'isClosed' = false 的文档。所以,我应该总是收到一份文件。
但如果不同,请给我 2 个示例,一个如果检索到的数据包含 1 个单个文档,另一个如果可能有多个文档,因此我将如何迭代数据。
我只希望能够以正确的方式读取/访问我收到的数据,无论是打印字段信息还是以文本形式显示它们。什么都行,但是在上面确切解释的场景中,我该怎么做。
非常感谢基于我的代码场景的简单示例。
【问题讨论】:
-
我不确定您在这里面临的第一个问题,但如果您的查询可能返回多个文档而您只关心一个,您可能应该查看
limit和orderBy在 Firestore 文档中。 -
嗨,汤姆,谢谢伙计。但这不是关于如何过滤的。我的目标是如何读取字段数据,如何访问它们。无论是接收单个文件还是多个文件。
标签: firebase flutter dart google-cloud-firestore