小编Pet*_*995的帖子

Firebase:减少大型集合的读取次数

经过大量搜索,我在阅读 Firebase 集合时发现了很多“不该做什么”(主要例子是 3 万美元账单事件),但是我正在努力寻找合适的解决方案我们的问题。

我们的网站包含产品目录。该目录由名为“products”的 firestore 集合填充,JSON 结构如下:

"products"{
   "productId"{
      "name":
      "price":
      "brand":
       ...
  }
}
Run Code Online (Sandbox Code Playgroud)

为了加载集合,我使用以下命令:

this.products = this.db.collection('products').valueChanges({idField: 'productID'});
Run Code Online (Sandbox Code Playgroud)

在高峰期,我们预计该系列将包含多达 2000 种产品。我担心的是,随着网站规模的扩大,这将变得极其昂贵。我注意到每次导航到“目录”页面时,它都会再次加载集合。因此,举一个有点难以想象的例子,如果页面一天加载 5000 次并加载完整集合,就像现在一样,它将导致 10,000,000 次文档读取(至少)。

我确信一定有更好的方法来做到这一点,但是,我似乎无法破解它。

非常感谢任何关于更好的方法来解决这个问题并降低成本的建议。

firebase angular google-cloud-firestore

6
推荐指数
2
解决办法
3308
查看次数

如何在 AngularFirestore 中使用 arrayUnion?

我有一个基本的数据库,它本质上在用户下面存储了一系列产品 ID。用户可以选择要添加到数组中的产品,因此使用“arrayUnion”是有意义的,因此我避免不断读取和重写数组,但是,我不断收到错误 *“属性 'firestore' 不存在于类型 ' Firebase 命名空间'。”

我遵循了在以下位置找到的文档:https : //firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array但我担心我仍然在错误地使用它。

我更新数组的代码是:

 addToPad(notepadName: string){
    const updateRef = this.db.collection('users').doc(this.activeUserID).collection('notepads').doc(notepadName);
    updateRef.update({
      products: firebase.firestore.FieldValue.arrayUnion(this.productId)
    });
  }
Run Code Online (Sandbox Code Playgroud)

javascript firebase google-cloud-firestore

5
推荐指数
2
解决办法
1755
查看次数