使用 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;
有人可以确认这是正确的规则吗?
我建议重新定义您的要求。您现在拥有:
如果计数器值不高于已存储的值,我想阻止写入文档。
虽然这在考虑数据需求/验证时很常见,但我发现当我将其框架为“如果......则允许编写文档”时,我可以更成功地映射到规则。在你的情况下,它读起来像:
如果文档尚不存在或计数器高于其当前值,则允许写入文档。
如果这确实是要求,那么它会转化为:
allow write: if (resource == null || request.resource.data.counter > resource.data.counter)