【发布时间】:2018-03-24 02:43:35
【问题描述】:
我有一个文档,其中每个受邀用户都有一个字段(他们的 request.auth.uid),其中有一个数字值代表他们的访问级别。
我希望用户能够从文档中删除他们的用户字段,但不能提高他们的字段级别。
删除自己的用户字段的代码很简单:
documentReference.update(myUserId, FieldValue.delete());
我可以很好地删除该字段,但我不知道如何编写规则以允许在 Firestore 安全中进行此操作(而不是对该字段的其他更新)。
我试过这样的规则:
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 的问题。
【问题讨论】:
标签: google-cloud-firestore firebase-security