我有一个收藏集,可以说它叫做rooms。在房间中,我有它的名称,其哈希密码,“成员”,子集合,看起来像这样:
rooms: {
room1Uid: {
name: "room name",
password: "hashed password",
members: {
member1Uid: { joindate: "timestamp"},
member2Uid: { joindate: "timestamp"},
...
},
resource1: {
something: "...",
},
resource2: {
something: "...",
}
},
room2Uid: {...}
}
我希望只有经过身份验证的用户才能在roomUid下读写成员列表中包含的所有内容。
因此,例如request.auth.uid == member1Uid可以从room1Uid下面读取resource1。
使用exists(),下面给出示例代码
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /rooms/room1Uid/{document=**} {
allow read, write: if exists(/databases/$(database)/documents/rooms/room1Uid/members/$(request.auth.uid))
}
}
}
尝试一下,让我知道,它是否起作用