Firestore规则允许在两个单独的Uid上写入

时间:2019-10-08 12:03:14

标签: firebase google-cloud-firestore firebase-security

enter image description here enter image description here我正在编写一个聊天应用程序,并且除“安全规则”部分外还完成了其他工作。我目前正在为每条消息创建两个文档(每个用户一个),可以将文档写入用户ID很好,但是数据库不允许在另一个配对的用户ID中写入。

如果userId在另一个文件的resource.data中,我已经尝试通过允许写操作

match /message/{user}/{chatRoomID}/{messageId} {
  allow read, write: if request.auth.uid == user || request.auth.uid in resource.data;
}

我如何做到这一点,以便每当一条消息发送到数据库时,它只能被特定的用户ID读取并写入? 每个消息对象都有对发送者的引用(每个用户的对象ID)。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

尽管in确实是安全规则中的运算符,但这不起作用:

request.auth.uid in resource.data

in运算符检查地图中是否存在,您很有可能将其他用户的UID存储在字段。

要检查某个字段是否具有特定值,请使用类似以下内容的

request.auth.uid == resource.data.senderID