【问题标题】:firestore update counter for new document新文档的firestore更新计数器
【发布时间】:2021-06-09 06:32:27
【问题描述】:

由于 firebase (firestore) 没有提供任何简单且非扩展的解决方案来计算集合中的文档,我计划创建几个计数器来跟踪文档的数量。我有以下设置:

[collection] - [document] - [subcollection]
users          userid       profile
admin          counters

我的想法是在集合“admin”中创建另一个文档“counters”,并在每次创建新的 userid 文档时更新字段“profile_created”。

我只看到一个问题。如果多人同时创建一个配置文件(创建了用户 ID),则读/写过程将不起作用,因为这几个人将获得相同的数字(读取)并且都会在这个数字上加 1。这意味着我将只有一个 +1,而不是几个 +1...

例如: profile_created = 5

5人同时注册

所有 5 人都将获得(读取)当前计数器编号(profile_created = 5) 所有 5 人都会为计数器添加 +1

结果不会是我想要的 11,我会是 6,因为不同的读取会覆盖其他读取...

有没有办法解决这个问题?

谢谢!!!

【问题讨论】:

    标签: javascript firebase asynchronous google-cloud-firestore


    【解决方案1】:

    Firestore 具有 ability to reliably increment a value。如果你相信你的用户会增加这个数字,它可能很简单:

    firebase.firestore().collection('counters').doc('profiles')
      .update({
        total: firebase.firestore.FieldValue.increment(1)
      });
    

    否则,创建一个在每次 Firestore 更新时执行的云函数,以使用 Firebase Admin 递增该值。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      相关资源
      最近更新 更多