gpt4 book ai didi

firebase - Firestore 多对多关系

转载 作者:行者123 更新时间:2023-12-02 19:37:26 26 4
gpt4 key购买 nike

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

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

最佳答案

我们已解决此问题如下:

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 )以了解是否必须依赖其他设计。如果您碰巧可能会达到这些限制,请考虑单独的映射集合。

关于firebase - Firestore 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com