首页 > 解决方案 > 如何使用 Firebase Firestore 进行一次性简单查询?

问题描述

在 Dart/Flutter 和学习 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());
    }
  }
}

它按预期工作 - 最初执行打印语句, 但随后每次更新 Firestore 数据库中文档中的任何字段时都会实时执行。

如何更改此代码,以便仅检索一次快照-而不是“订阅/收听”...,因此我们不会将带宽浪费在不需要/不需要的数据上,并且打印语句只执行一次?

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


Firestore.instance.collection(...).where(...)返回一个查询对象。它有一个名为getDocuments()的方法,该方法执行查询并为您提供带有一组结果的 Future。

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

或用于await获取 QuerySnapshot,因为getDocumets()返回一个 Future。


推荐阅读