如何在NOSQL解决方案(例如Firestore)中创建多端的数据模型



我的意思是 multi-tenant

  1. 用户可以属于组织。
  2. 一个没有任何人邀请的用户,被安置在自己的组织中(blah123)作为管理员
  3. 多个这样的用户是他们自己的单一组织的创始人,在同一基于Firestore的应用程序中。他们可以邀请其他人,受邀加入创始人的组织。
  4. 为组织创建的任何数据或该组织用户创建的任何数据都应向另一个组织的用户分娩。
  5. 如果我们愿意,我们应该能够配置属于同一组织的用户,以查看该组织创建的其他用户的任何数据。

问题

作为专家,您认为这是不可能为Cloud Firestore设计的数据模型吗?可以执行此操作的数据模型将是什么?

作为专家,您认为这是不可能为Firestore设计的数据模型吗?

绝对是不是不可能的,实际上很简单。

可以做到的数据模型,看起来是什么?

您用例的可能数据库架构可能是:

Firestore-root
   |
   --- users (collection)
   |    |
   |    --- uid (document)
   |         |
   |         --- organizations: ["organizationId", "organizationId"] (array)
   |         |
   |         --- //Other user properties
   |
   --- organizations (collection)
         |
         --- organizationId (document)
                |
                --- users: ["uid", "uid"] (array)
                |
                --- //Other organization properties
                |
                --- organizationData (collection)
                      |
                      --- organizationDataId (document)
                             |
                             --- //Organization Data properties

用户可以属于组织。

您可以看到,用户的ID添加在users数组中,该数组是每个organizationId文档中的属性。蜜蜂数组,您可以添加该特定组织分开的所有用户的所有用户ID。

一个没有任何人邀请的用户,被安置在自己的组织中(blah123)作为管理员

用户注册后,您可以通过生成新的organizationId创建一个新组织,然后在users数组中添加用户。

多个这样的用户是他们自己的单一组织的创始人,在同一基于Firestore的应用程序中。他们可以邀请他人,受邀加入创始人的组织。

上面回答。

为组织创建的任何数据或该组织用户创建的任何数据都应从另一个组织的用户分离。

您可以看到,我在organizationId文档下创建了一个名为organizationData的子集合,您可以在其中添加为文档组织数据。因为您已经拥有该组织分开的用户的UID,所以您只需使用Firestore安全规则即可允许这些用户读取该数据。

如果我们愿意,我们应该能够配置属于同一组织的用户以查看该组织创建的其他用户的数据。

在这种情况下,当用户加入组织时,您应该首先获取该组织的所有用户对象,然后查询数据库以获取这些用户分开的所有组织,并在所有这些组织中复制UID。/p>

就是这样:)

最新更新