【发布时间】:2019-03-07 15:07:26
【问题描述】:
我的目标是在使用 Firebase Cloud Firestore 时优化应用架构的成本。我了解 Cloud Firestore 的定价模型是按读/写计算的。因此,出于成本优化的目的,我正在考虑以下模式。我想知道它是“最佳实践”还是反模式。
这个想法是,每当我创建一个新文档以添加到集合中时,我都会让用户更新第二个“主文档”,其中包含文档内容的某些子集以及来自许多不同用户的许多类似文档的相同内容.
然后,当我去获取列表数据时,我不会获取集合并为从集合中读取的每个文档收取费用(多次读取),而是仅检索主文档(一次读取)。
在代码中,如下所示。
而不是这个:db.collection("reviews")
.get()
.then(querySnapshot => {
querySnapshot.forEach(doc => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
我这样做:
const docRef = db.collection("reviews").doc("MasterList");
docRef.get().then(doc => {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
})
这是一个成本明智的最佳做法吗?还是这是一种反模式?
【问题讨论】:
-
这是迄今为止最具成本效益的方法,只需关注@Alex Mamo 提到的大小限制。
-
谢谢,这正是我使用 Firestore(1 个月)以来一直在考虑的问题......但我完全是一个反模式解决方案,让我的代码更复杂......正如@Alex Mamo 所说,看看 Firebase 实时数据库。
-
我想出了一个 simple solution 给关心 Firestore 定价的客户。它利用 Cloud Firestore 缓存机制来使您想要进行的任何类型的查询受益。你可以看看。
标签: firebase google-cloud-platform google-cloud-firestore