我有一个Firestore结构,它有一个"organizations“集合和一个"users”集合。
当用户通过Auth创建帐户时,我想创建一个新的“组织”,并将他添加到此组织中。这意味着拥有“创建”权限。
问题是,通过这样做,用户可以创建多个组织并加入其中。
我面临的另一个问题是关于变化。当该用户更改他们的信息(姓名、电子邮件等)时,它也会更新他们在"users“集合中的行,但这也意味着他们将能够更改”组织“引用并将其指向另一个组织,这是不好的。
因此,我想知道这样做的正确方法是什么,以及/或者我是否做错了。
发布于 2021-11-20 11:02:12
这种技术被称为denormalization,当涉及到顶级NoSQL数据库时,这是一种常见的做法。
我从您的问题中了解到,您希望将用户添加到组织中。在这种情况下,不需要复制数据。我将使用如下所示的结构:
Firestore-root
|
---- users (collection)
| |
| --- $uid (document)
| |
| --- organizations: [$orgId, $orgId, $orgId] (array)
|
---- organizations (collection)
|
--- $orgId (document)
|
--- users: [$uid, $uid, $uid] (array)其中" organizations“是保存组织is的数组,"users”是保存用户is的数组。
因为我们通常是根据我们想要执行的查询来构造Firestore数据库,所以上面的模式将帮助您查询用户所属的所有组织或组织中的所有用户。这意味着如果您想要显示用户数据,您必须执行一个新的Firestore数据库调用。
https://stackoverflow.com/questions/70044163
复制相似问题