【问题标题】:Flutter & Cloud-Firestore: how to read Firestore Documents linked to Flutter FutureBuilderFlutter & Cloud-Firestore:如何阅读链接到 Flutter FutureBuilder 的 Firestore 文档
【发布时间】: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 个单个文档,另一个如果可能有多个文档,因此我将如何迭代数据。

我只希望能够以正确的方式读取/访问我收到的数据,无论是打印字段信息还是以文本形式显示它们。什么都行,但是在上面确切解释的场景中,我该怎么做。

非常感谢基于我的代码场景的简单示例。

【问题讨论】:

  • 我不确定您在这里面临的第一个问题,但如果您的查询可能返回多个文档而您只关心一个,您可能应该查看limitorderBy在 Firestore 文档中。
  • 嗨,汤姆,谢谢伙计。但这不是关于如何过滤的。我的目标是如何读取字段数据,如何访问它们。无论是接收单个文件还是多个文件。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

你可以在未来这样做:

Future<void> performActionsOnClosed() async {
    await FirebaseFirestore.instance
        .collection('sessionsLog')
        .where('isClosed', isEqualTo: false)
        .get()
        .then(
      (snapshot) {
        if (snapshot.docs.isNotEmpty) {
          // Perform actions
        } else {
          print('No Documents Found');
        }
      },
    );
  }

【讨论】:

  • 这正是我所需要的,简单地说!现在看,并不复杂,但是网上查了很多场景和代码,让我一头雾水。如果您不介意,除了在解释他们使用什么的同时构建应用程序的课程。您知道的任何在线文档真的可以提供帮助吗?例如,对于带有 Flutter 的 Cloud_firestore 插件,我正在努力寻找清晰的文档? Firebase 文档为您提供了一个通用代码,可用于除颤振之外的所有内容。并且插件本身 cloud_firestore.dart 几乎是 0 解释。非常感谢朋友!
  • 观看来自 fireship.io 的视频:youtube.com/… 他有一些很棒的 Flutter 视频。 IMO 最好的学习方法是尝试打破常规,然后尝试了解问题所在。
猜你喜欢
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 2021-03-15
  • 2021-07-02
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多