firebase - 如何使用 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 数据库中文档中的任何字段时都会实时执行。
如何更改此代码,以便仅检索一次快照-而不是“订阅/收听”...,因此我们不会将带宽浪费在不需要/不需要的数据上,并且打印语句只执行一次?
解决方案
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。
推荐阅读
- javascript - Puppeteer 不拾取对话框
- c# - 必应自定义搜索获取下一个 10 个结果 ASP.NET C#
- python-3.x - 如何在 Flask 中管理 AWS 令牌并处理刷新
- python - 为什么 pytorch 不能在 CUDA 上运行模型?
- java - 从 google firestore -Quiz 应用程序获取问题时应用程序崩溃
- bootstrap-5 - BootStrap-5,无法看到关闭图标(十字)
- android - jetpack compose 中是否有等效的“触摸代表”?
- c++ - 在 `std::upper_bound` 的自定义比较器函数中获取当前元素的索引
- html - 为什么边界半径对图像不起作用?
- python - 部署期间未加载静态