gpt4 book ai didi

google-cloud-firestore - 如何处理 Firestore 安全规则中的 FieldValue.delete()?

转载 作者:行者123 更新时间:2023-12-05 07:35:35 24 4
gpt4 key购买 nike

我有一个文档,其中每个受邀用户都有一个字段(他们的 request.auth.uid),其中一个数值表示他们的访问级别。

我希望用户能够从文档中删除他们的用户字段,但不能增加他们字段的级别。

删除自己的用户字段的代码很简单:

documentReference.update(myUserId, FieldValue.delete());

我可以很好地删除该字段,但我不知道如何在 Firestore Security 中编写规则以允许此操作(而不是对该字段的其他更新)。

我尝试过如下规则:

allow update: if (request.resource.data[request.auth.uid] < resource.data[request.auth.uid]);

allow update: if !(request.resource.data[request.auth.uid] > 0);

但它们会导致错误(我猜是因为该字段不再存在)。

需要注意的一点:当我将用户字段值从原始值更新为较低(非删除)值时,上述规则仍然有效,并且

allow update: if request.auth.uid in request.writeFields;

使用 FieldValue.delete() 时仍然返回 true,所以这不是用户 ID 的问题。

最佳答案

此实例的一个解决方法是:

allow update: if (request.resource.data.size() == resource.data.size() - 1) 
&& request.writeFields.size() == 1
&& request.auth.uid in request.writeFields
&& !(request.auth.uid in request.resource.data);

基于此处的评论:Firestore Security - allow only known fields

关于google-cloud-firestore - 如何处理 Firestore 安全规则中的 FieldValue.delete()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49460697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com