【发布时间】:2020-01-19 01:19:06
【问题描述】:
在执行使用 Flutter 创建的 Firestore-Test-App 后,我查看 Firestore 分析以查看我的 Test-App 发出了多少请求。它告诉我,我在 1 次测试开始时至少读取了 20 到 60 个文档。问题是,按照我的理解,测试最多应该产生 1-3 次读取。
我读过https://firebase.google.com/docs/firestore/pricing。它确实有助于理解 Firestore 的计费逻辑,但按照文章中的逻辑,我应该最多读取约 5 次。 此线程:Firestore - unexpected reads 还暗示,文档读取可能来自打开的 Firebase 控制台,正在查看文档。所以我在测试前关闭它并在 30 分钟后打开它。这并没有改变结果。我还设置了断点,代码只执行了一次。
我打开了一个全新的 Flutter 项目来测试它。 这是发出读取请求的唯一部分:
CollectionReference dbUsers = dbInstance.collection("Users");
var user = dbUsers
.where("docId", isEqualTo: fireAppUser.user.uid)
.limit(1)
.snapshots();
var _userSub = user.listen((value) {
if (value.documents.isNotEmpty && value.documents.first.data != null)
print(value.documents.first.data);
});
_userSub.cancel()
低于我的 Firestore 规则,目前是默认设置。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
我的数据库中正好有 5 个文档。
我预计最多可以读取约 5 次文档。请帮助我理解为什么此片段会导致意外数量的读取。是什么原因造成的?
编辑:忘记将 cancel() 附加到 sn-p
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore