我有通知记录,其中有文本和用户列表(最多10个)。
{text: "Beware of the dog", users: [ uid1, uid2, uid3, ... ]}
当用户阅读/确认通知时,我想将他从可以看到通知的用户列表中删除(然后他将不再获得通知)。
为此,当用户按下“隐藏通知按钮”时,他发送更新通知记录的请求:
users: FieldValue.arrayRemove(uid)
我想强制执行用户的安全规则:
试过
allow update: if
request.auth.uid != null
&& request.auth.uid in resource.data.users
&& request.resource.size() == 1
&& request.resource.data.users != null;
任何提示,帮助,想法都很受欢迎。
如果没有循环,我认为这是不可能的,这在安全规则中是不存在的。好吧:如果你了解所有用户,你可以枚举所有选项,基本上展开不可能的循环。但即使在安全规则中这是可能的,规则也会非常冗长。
我建议创建一个子集合,其中每个UID都存储在一个单独的文档中。在该子集合中,您可以通过仅允许用户仅删除自己的文档来实现您的要求。