代码之家  ›  专栏  ›  技术社区  ›  Nerdy Bunz

如何使用Firebase Firestore进行一次性简单查询?

  •  0
  • Nerdy Bunz  · 技术社区  · 5 年前

    在Dart/Flatter和学习Firebase Firestore中。。。在创建UI之前,我使用以下方法进行测试:

    _testFireStore() async {
      var result = Firestore.instance
          .collection('users')
          .where('uid', isEqualTo: 'IvBEiD990Vh0D9t24l2GCCdsrAf1')
          .snapshots();
    
      await for (var snapshot in result) {
        for (var user in snapshot.documents) {
          print('main.DEBUG: ' + user.data.toString());
        }
      }
    }
    

    它按预期工作——最初执行print语句, 而且在Firestore数据库的文档中,每次更新任何字段时都会实时更新 .

    如何更改此代码,使快照只检索一次,而不是“订阅/侦听”到。。。我们是否只在不需要的数据上打印一次?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Doug Stevenson    5 年前

    Firestore.instance.collection(...).where(...) 返回一个 Query 对象它有一个叫做 getDocuments() 这将执行查询,并为您提供一组结果的未来。

    var query = Firestore.instance
        .collection('users')
        .where('uid', isEqualTo: 'IvBEiD990Vh0D9t24l2GCCdsrAf1');
    query.getDocuments().then((QuerySnapshot snapshot) {
        // handle the results here
    })
    

    或使用 await 为了拍到QuerySnapshot,因为 getDocumets()

        2
  •  0
  •   Peter Haddad    5 年前

    使用 getDocuments() ,一次检索所有文档:

    _testFireStore() async {
      var result = await Firestore.instance
          .collection('users')
          .where('uid', isEqualTo: 'IvBEiD990Vh0D9t24l2GCCdsrAf1')
          .getDocuments();
          print(result.documents.toString());
    }
    
    推荐文章