我正在编写一个聊天应用程序,并且除“安全规则”部分外还完成了其他工作。我目前正在为每条消息创建两个文档(每个用户一个),可以将文档写入用户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)。在此先感谢!!
答案 0 :(得分:1)
尽管in
确实是安全规则中的运算符,但这不起作用:
request.auth.uid in resource.data
in
运算符检查地图中是否存在键,您很有可能将其他用户的UID存储在值字段。
要检查某个字段是否具有特定值,请使用类似以下内容的
:request.auth.uid == resource.data.senderID