【发布时间】:2021-06-13 12:53:17
【问题描述】:
我试图了解 Firebase 定价模型,但我偶然发现了这一点。 https://firebase.google.com/docs/firestore/pricing
文档读取以外的查询
对于文档读取以外的查询,例如对集合 ID 列表的请求,您需要为一个文档读取付费。如果获取完整的结果集需要多个请求(例如,如果您使用分页),则您需要为每个请求支付一次费用。*
假设我从profiles 集合(10.000 个文档)中随机获取 10 个配置文件limit(10),这将花费我 10 次读取。
return FirebaseFirestore.instance
.collection('profiles')
.limit(10)
.get()
.then(...)
现在我想在 UI 中显示我的 10 个结果,并且我还想向客户显示一个心形图标,如果客户喜欢或不喜欢个人资料,该图标就会被填充。我会获取用户数据并检查用户是否喜欢 10 个配置文件之一。我已经学会了将用户特定数据存储在同一个集合profiles 中没有意义,假设我们将其保存在一个名为profilelikes 的users 集合子集合中:
return FirebaseFirestore.instance
.collection('users')
.doc('userId')
.collection('profilelikes')
.get()
.then((QuerySnapshot querySnapshot) => {
querySnapshot.docs.forEach((doc) {
if () {
// check if profiles from list matches userprofile document
}
})
});
这对这个案例究竟意味着什么?假设用户在profilelikes 中有 5000 个文档,如果其中 10 个匹配或不匹配,我将在 5000 个文档中搜索。假设其中 2 个匹配:
我们这里有多少成本?
First Query:10 次读取,因为我们这里有 10 个结果 第二次查询:???
【问题讨论】:
-
只是一个建议,如果您不想担心读/写计数,请坚持使用实时数据库,因为它具有更简单的计费结构。
-
感谢您的回答。我认为在我的情况下,实时数据库对我来说没有意义,因为它很深而不是平坦的,因为我有很多分层数据,并且实时数据会根据带宽量进行计费,即使我不需要它也会读取整个树。实时数据库适用于简单的数据结构。无论如何,如果有人能指出所提供的案例会发生什么,那将会很有趣:)
标签: firebase flutter google-cloud-firestore