我正在用Firestore构建一个聊天应用程序,每个聊天室都有一个参与者地图,如下所示:
密钥是用户的相应UID。我想使用此地图来确定哪些用户可以访问聊天。 根据我的安全规则,我目前正在检查此映射中是否存在登录用户的UID,以允许进行读写访问:
allow read, write: if request.auth.uid in resource.data.participants
但这只会检查用户是否在此地图中,而不是检查该值是否真实。我也想检查一下。
我基本上想要的是这样的东西:
allow read, write: if resource.data.participants.request.auth.uid == true
但这实际上不起作用。如何在地图检查中使用当前用户的UID作为密钥?
答案 0 :(得分:1)
使用方括号通过所需的任何字符串表达式索引到Map:
allow read, write: if resource.data.participants[request.auth.uid] == true