Firestore 安全规则 |如果计数器不大于 DB 中存储的字段,则阻止写入数据

问题描述 投票:0回答:1

使用 Firestore,如果其

counter
值不高于已存储的值,我想阻止写入文档。
counter
是文档的一个字段,每次新书写都会增加。但这一定不能阻止第一次创建文档。

我尝试为此编写一条安全规则,我编写了以下规则,但我不完全确定我做了什么。

      allow create: if request.resource.data.timestamp == request.time              
        && request.auth != null 
        && request.auth.uid == userId; 
      allow write: if request.resource.data.timestamp == request.time 
        && request.resource.data.counter > resource.data.counter
        && request.auth != null 
        && request.auth.uid == userId;

有人可以确认这是正确的规则吗?

firebase google-cloud-firestore firebase-security
1个回答
0
投票

我建议重新定义您的要求。您现在拥有:

如果计数器值不高于已存储的值,我想阻止写入文档。

虽然这在考虑数据需求/验证时很常见,但我发现当我将其框架为“如果......则允许编写文档”时,我可以更成功地映射到规则。在你的情况下,它读起来像:

如果文档尚不存在或计数器高于其当前值,则允许写入文档。

如果这确实是要求,那么它会转化为:

allow write: if (resource == null || request.resource.data.counter > resource.data.counter)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.