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

Firebase Firestore get()计为3个api调用,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,本周我一直在开发一个简单的应用程序来学习使用Firestore,我一直在关注配额页面上的api调用。整整一周,我只打了400个电话,但今天的报告突然增加到50000多个。现在,我的Firestore只有2个集合,一个集合中只有8个文档。所以没有太多的数据。我的应用程序仍然非常原始,只能收集和添加/更新其中一个文档。我提到这些都是为了解释我的应用程序做的不多,所以当我看到它的使用情况时,我感到非常惊讶 我开始深入研究单个通话,并注意到当我执行单个通话时: let db = fire.firesto

本周我一直在开发一个简单的应用程序来学习使用Firestore,我一直在关注配额页面上的api调用。整整一周,我只打了400个电话,但今天的报告突然增加到50000多个。现在,我的Firestore只有2个集合,一个集合中只有8个文档。所以没有太多的数据。我的应用程序仍然非常原始,只能收集和添加/更新其中一个文档。我提到这些都是为了解释我的应用程序做的不多,所以当我看到它的使用情况时,我感到非常惊讶

我开始深入研究单个通话,并注意到当我执行单个通话时:

let db = fire.firestore();
db.collection("tags").get()
.then( snapshot => {
  console.log(snapshot);
})
.catch( error => {
  console.log(error);
})
云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调用吗?

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

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

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

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}
免责声明: 我并不是说这可以解决达到50000+个API调用的问题,但是我建议这很可能是您在该配额内遇到的问题


通过Firestore的控制台查看和编辑项目数据将 计入您的总体
云Firestore API调用
配额

同样,您可能会觉得这很有帮助,但用户会多次测试他们的应用程序(无论是运行身份验证、为字段写入新值还是云函数)观察数据变化。这将导致配额增加不一致,因为您基本上是同时在两个地方读/写

我建议只通过观察应用程序来尝试这一点,日志语句最好地描述发生的过程。如果你仍然看到奇怪的配额增加,不幸的是它存在于你的代码中,而不是谷歌。希望这有帮助

免责声明: 我并不是说这可以解决达到50000+个API调用的问题,但是我建议这很可能是您在该配额内遇到的问题


通过Firestore的控制台查看和编辑项目数据将 计入您的总体
云Firestore API调用
配额

同样,您可能会觉得这很有帮助,但用户会多次测试他们的应用程序(无论是运行身份验证、为字段写入新值还是云函数)观察数据变化。这将导致配额增加不一致,因为您基本上是同时在两个地方读/写


我建议只通过观察应用程序来尝试这一点,日志语句最好地描述发生的过程。如果你仍然看到奇怪的配额增加,不幸的是它存在于你的代码中,而不是谷歌。希望这有帮助

该集合中存储了多少文档?只有一个文档包含大约20个布尔值。它的结构类似:{tag1:true,tag2:true,tag3:true…}它用于填充自动完成字段,以便我可以按这些标记搜索其他集合中的文档您确定代码只执行一次吗?是否有任何上下文可以提供或隔离该代码段?我将代码简化为我认为只有一个调用。它只被记录到控制台一次。我使用的是React,此代码位于componentDidMount方法中。我假设这是由于您的安全规则造成的。以下是文档:该集合中存储了多少文档?只有一个文档包含大约20个布尔值。它的结构类似:{tag1:true,tag2:true,tag3:true…}它用于填充自动完成字段,以便我可以按这些标记搜索其他集合中的文档您确定代码只执行一次吗?是否有任何上下文可以提供或隔离该代码段?我将代码简化为我认为只有一个调用。它只被记录到控制台一次。我使用的是React,此代码位于componentDidMount方法中。我假设这是由于您的安全规则造成的。以下是文件: