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



在飞镖/长笛和学习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数据库中文档中的任何字段时都会实时执行

如何更改此代码,使快照只检索一次,而不是"订阅/收听"…这样我们就不会在不需要的数据上浪费带宽,打印语句只执行一次?

Firestore.instance.collection(...).where(...)返回一个Query对象。它有一个名为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。

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

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

最新更新