首页 > 解决方案 > Firestore 进行最后一次更新

问题描述

我在 VOIP 应用程序中使用 Firestore,这是我的场景:

所以这里的问题:

我在 Firebase 控制台中看到的最后一次 firestore 更新正在响铃,它应该结束,但由于在用户 A 结束通话后设置了 status = ringing,因此它成为最后一个状态。无法查看是否设置了最后结束,因此 B 用户不设置他的振铃状态。

我如何解决那个“结束”是最后的状态。有没有最后更新的选项?

编辑:这可以通过创建规则来完成,如果一旦状态=结束,它就不能改变?

我创建了以下规则,但它不起作用:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2022, 10, 28);
      allow update: if resource.data.status != 'end'; // I have added this line only
    }
  }
}

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


Firestore 规则是解决此问题的解决方案。基本上我有允许写入的默认规则,并且write = create、update、delete,所以我必须用 create、delete、read 更改 write 以使其工作。

在将我的规则更新为此之后,它现在可以工作了:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, create, delete: if request.time < timestamp.date(2022, 10, 28);
      allow update: if resource.data.status != 'end';
    }
  }
}

推荐阅读