为啥在 Firestore 中写入 1 个文档需要 +30 次读取? [复制]

Posted

技术标签:

【中文标题】为啥在 Firestore 中写入 1 个文档需要 +30 次读取? [复制]【英文标题】:Why 1 document write in Firestore costs +30 reads? [duplicate]为什么在 Firestore 中写入 1 个文档需要 +30 次读取? [复制] 【发布时间】:2020-09-25 12:05:21 【问题描述】:

我正在使用 Firebase Firestore 创建日志系统。结构是:

集合:错误 错误 1 ​​的条目 错误 2 的条目 ...

我像这样添加一个错误:

val error = hashMapOf(
    "datetime" to FieldValue.serverTimestamp(),
    "errorMessage" to errorMessage
)

database.collection("errors")
    .add(error)

然后我会观察成本是如何受此操作影响的。 关于写入计数,显然增加了1个写入操作。

问题在于读取操作。由于某种原因,执行此代码会导致:

超过 30 次读取 即使我终止了应用程序,读取计数也会随着时间的推移而不断增加。

为什么一个写操作要花费这么多读操作?

【问题讨论】:

请注意,如果您通过 Firebase 控制台监控数据库,则来自 Firebase 控制台的读取会包含在您的读取计数中。 我在firebase网站上看,这意味着每次写入,如果我去网站并选择了***集合,所有元素都被计为读取?? 如果“我访问网站”是指“我访问 Firebase 控制台”(console.firebase.google.com/u/0),答案是肯定的,那里的读取数计入您的配额/计数。 并且每次枚举(未打开)文档时,这算作一次读取?? 是的,因为它是查询的结果。实际上没有“被打开”的概念:获取包含所有字段的文档。查询获取所有相应的文档。 【参考方案1】:

请注意,如果您通过 Firebase console 监控/监视数据库,则从 Firebase 控制台读取的 Firestore 文档将包含在您的 Firestore 读取计数/配额中。

【讨论】:

以上是关于为啥在 Firestore 中写入 1 个文档需要 +30 次读取? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cloud Function 在 Firestore 上写入数据突然失败

iOS - Firestore 文档同时写入多个

为啥 firebase_firestore 安全规则不适用于文档读取

如何限制对 Firestore 中用户拥有的文档的写入?

为啥这个 firestore 查询需要索引?

为啥添加单个文档时,Firestore 侦听器会返回 .add 两次?