【问题标题】:Firestore Many to Many RelationshipsFirestore 多对多关系
【发布时间】:2017-12-29 03:20:04
【问题描述】:

希望获得与具有角色/权限的多对多结构相关的建议。

我们需要一个允许用户属于多个组织的结构,并且用户对每个组织都有一个角色/权限。比如User1属于ABC COAdminUser1属于XYZ COGuest

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    我们已经解决了这个问题:

    organizations (collection) {
        ABC (doc) {
            permissions (object): {
                User1DocID (object): {
                    admin: true
                }
            }
        }
        XYZ (doc) {
            permissions (object): {
                User2DocID (object): {
                    guest: true
                }
            }
        }
    }
    

    这样你可以像这样配置规则:

    match /origanizations/{origanization} {
        allow update, read: if resource.data.permissions[request.auth.uid].admin == true;
        allow read: if resource.data.permissions[request.auth.uid].guest == true;
    }
    

    对于组织的资源,您必须将组织 ID 存储在特定文档中(显然)。然后你可以为它们设置规则如下:

    match /origanizationRessources/{origanizationRessource} {
        allow update: if get(/databases/$(database)/documents/organizations/$(resource.data.organizationId)).data.permissions[request.auth.uid].admin == true;
    }
    

    您还可以通过此设计轻松查询用户具有特定权限的数据。

    请注意:此设计符合我们的目的,因为我们分配给组织的用户数量有限且直接。如果您不确定,请查看文档大小方面的限制(请参阅https://firebase.google.com/docs/firestore/quotas),以了解您是否必须依赖其他设计。如果您碰巧处于可能达到这些限制的位置,请考虑使用单独的映射集合。

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 2019-01-11
      • 1970-01-01
      • 2014-10-11
      相关资源
      最近更新 更多