Firebase Firestore get()计为3个api调用

时间:2018-10-12 16:08:42

标签: firebase google-cloud-firestore

本周我一直在开发一个简单的应用程序,以学习使用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调用计数器增加了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调用吗?

2 个答案:

答案 0 :(得分:1)

免责声明:

我不建议这样做可以解决您达到50,000个以上API调用的问题,但是我建议这很可能是您在该配额内遇到的问题。


  

通过Firestore控制台查看和编辑项目数据将   计入您的总体$ java -version openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) $ sudo apt remove openjdk+ Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package openjdk 配额中。

同样,您可能没有发现此帮助,但是用户测试应用程序的次数(无论是运行auth,为字段写入新值还是使用云函数)的次数均超过< strong>边观察数据变化边。这会导致配额增加不一致,因为您实际上一次要在两个位置读/写。

我建议您通过观察应用程序来尝试此操作,并使用日志语句最好地描述正在发生的过程。如果您仍然静止看到奇怪的配额增加,那么很遗憾,它位于您的代码中,而不是Google。希望这会有所帮助!

答案 1 :(得分:0)

如果是安全规则的原因,请尝试使用以下安全规则,直到应用程序处于开发过程中:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}