Fra*_*nck 6 firebase-security google-cloud-firestore
我有通知记录,其中有文本和用户列表(最多 10 个)。
{text: "Beware of the dog", users: [ uid1, uid2, uid3, ... ]}
Run Code Online (Sandbox Code Playgroud)
当用户阅读/确认通知时,我想将他从可以看到通知的用户列表中删除(然后他将不再收到任何通知)。
为此,当用户按下“隐藏通知按钮”时,他会发送一个请求来更新通知记录:
users: FieldValue.arrayRemove(uid)
Run Code Online (Sandbox Code Playgroud)
我想使用用户的安全规则:
试过
allow update: if
request.auth.uid != null
&& request.auth.uid in resource.data.users
&& request.resource.size() == 1
&& request.resource.data.users != null;
Run Code Online (Sandbox Code Playgroud)
任何提示、帮助、想法都值得赞赏。
小智 10
我遇到了类似的情况,这是一个脑筋急转弯。这就是我的诀窍:
allow update: if
request.auth.uid != null
&& request.resource.data.diff(resource.data).affectedKeys().hasOnly([data])
&& request.resource.data.users.size() == resource.data.users.size() - 1
&& resource.data.users.removeAll(request.resource.data.users)[0] == request.auth.uid
Run Code Online (Sandbox Code Playgroud)
具体来说:
datauid)removeAll()并返回一个数组及其差值。在这种情况下,它返回一个只包含uid您选择的单曲的数组arrayRemove()。然后我们简单地检查uid——它只能存在于位置[0]——并确保它等于uid经过身份验证的用户的。| 归档时间: |
|
| 查看次数: |
349 次 |
| 最近记录: |