Firestore 安全规则 - 嵌套文档

Firestore security rules - nested documents

我想使用 firebase 安全规则限制对组数据的访问。

每个用户都有一个userId,可以在多个组中。

同一组中的所有参与者都应该能够为所有参与者更改组。

例如,应该允许用户 Wrrhks98BUSLLoGfnUswt2FE57s 对 用户 2B0ABrxKXzr9UdmCP8TuMgqrtBI3

的组文档 -JrwbcP1OdmjUWxTWHJk

一般结构:

collection (groups) 
--> Document (userId) 
   --> Collection (userId) 
       --> Document(groupId)

示例:

collection (groups) 
    --> Document (2B0ABrxKXzr9UdmCP8TuMgqrtBI3) 
        --> Collection (2B0ABrxKXzr9UdmCP8TuMgqrtBI3) 
            --> Document(-JrwbcP1OdmjUWxTWHJk)
            --> Document(-Mrwtjko3dmjUWxTWHJl)
            --> Document(-LrwbcPtujdqcWxTWHJe)
    --> Document (Wrrhks98BUSLLoGfnUswt2FE57s) 
        --> Collection (Wrrhks98BUSLLoGfnUswt2FE57s) 
            --> Document(-JrwbcP1OdmjUWxTWHJk)

我试过了,但没用:

match /groups/{userId}/{userId2}/{groupId} {
    allow read, write: if exists(/databases/$(database)/documents/groups/$(request.auth.uid)/$(request.auth.uid)/groupId)
}

我找到了解决方案:-)

就是这样:

match /groups/{userId}/{userId2}/{groupId} {
    allow read, write: if exists(/databases/$(database)/documents/groups/$(request.auth.uid)/$(request.auth.uid)/$(resource.data.id))
}