【问题标题】:Which method should I use to store data in firebase firestore document?我应该使用哪种方法将数据存储在 firebase firestore 文档中?
【发布时间】:2021-08-21 04:26:50
【问题描述】:

我有两个对象的样本数据。两者都可以放在具有以下两种结构的文档中。并且很容易在这两种方法上执行 CRUD。但我想知道哪个更有效。

结构 1:

key1:{ sr.:1, name:'Raj', city: 'Mumbai'}
key2:{ sr.:2, name:'Aman', city: 'Delhi'}

使用合并属性可以很容易地在单个文档中创建不同的对象,并且可以使用以下代码执行删除。

db.collection('colName')
        .doc('docName')
        .update({
          [key1]: firebase.firestore.FieldValue.delete(),
        })

结构2:

它基本上是一个数组中的对象。

arr:[ { sr.:1, name:'Raj', city: 'Mumbai'} , 
      { sr.:2, name:'Aman', city: 'Delhi'} ]

可以使用以下代码将数据推送到数组 arr 中。

 ['arr']: firebase.firestore.FieldValue.arrayUnion(object3)

并且可以这样删除。

['arr']: firebase.firestore.FieldValue.arrayRemove(indexToBeDeleted)

在 CRUD 操作方面,哪个更高效?

【问题讨论】:

    标签: node.js firebase google-cloud-platform google-cloud-firestore nuxt.js


    【解决方案1】:

    CRUD 是 4 种不同的品质,每一种都有额外的可衡量属性。在 firestore 的上下文中谈论 CRUD 也会为这些内容添加更多属性。

    有 Firestore 限制/配额:https://cloud.google.com/firestore/quotas 并且,还有firestores费用:https://firebase.google.com/docs/firestore/pricing

    • 每次读取的 Firestore 费用。

    将所有数据存储到一个文档中具有成本效益。

    • Firestore 针对读取进行了优化。

    在限制/配额文档中,您可能会注意到文档的最大写入速率为每秒 1 次。您打算多久将新数据写入该 1 个文档的数组? 1 个文档仍然有效吗?

    • Firestore 的最大文档大小为 1MB。

    您是否要向文档写入超过 1MB 的内容。添加逻辑以拆分文档后,它仍然有效吗?

    在设计数据结构时需要考虑很多方面。一种品质的效率必然会导致另一种品质的效率低下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多