【发布时间】:2019-03-17 21:46:37
【问题描述】:
本周我一直在开发一个简单的应用程序来学习使用 Firestore,并且我一直在配额页面上查看我的 api 调用。整个星期我几乎没有使用 400 个电话,但今天突然报告超过 50,000 个。现在,我的 Firestore 只有 2 个集合,而一个集合中只有 8 个文档。所以没有太多的数据。我的应用程序仍然非常原始,只能在其中一个中收集和添加/更新文档。我提到所有这些是为了说明我的应用程序并没有做太多事情,所以当我看到使用情况时非常惊讶。
我开始深入研究各个呼叫,并注意到当我执行单个呼叫时:
let db = fire.firestore();
db.collection("tags").get()
.then( snapshot => {
console.log(snapshot);
})
.catch( error => {
console.log(error);
})
Cloud Firestore API Calls 计数器增加了 3 个。没有自定义函数,没有其他数据库规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if request.auth.uid != null;
allow write: if request.auth.uid != null;
}
}
}
我还没有研究过创建/更新文档,但是有人知道为什么这个 get() 会算作 3 次 api 调用吗?
【问题讨论】:
-
该集合中存储了多少文档?
-
只有 1 个文档包含大约 20 个布尔值。它的结构如下: { tag1: true, tag2: true, tag3: true... } 它用于填充自动完成字段,以便我可以通过这些标签搜索其他集合中的文档
-
您确定代码只执行一次吗?是否有任何上下文可以提供或隔离该代码 sn-p?
-
我将代码简化为我认为只有一个调用。它只被记录到控制台一次。我正在使用 React,这段代码在 componentDidMount 方法中。
-
我假设这是由于您的安全规则。这是文档:firebase.google.com/docs/firestore/pricing#operations
标签: firebase google-cloud-firestore