我陷入了困境,问题是我有一个应用程序,其中用户存储在名为
users
的集合中。然后,我将组存储在名为 groups
的集合中。在较高级别上,用户始终是一个组的一部分,事实上,当您登录时,系统会要求您加入或创建一个组。
我遇到的问题是,当您注册时,我将 groupId 存储为
shared preferences
(这是快乐的路径)。如果您有一个全新的设备并且已经有一个帐户,这就是我遇到问题的地方,因为显然,设备商店不会保存 groupId。
我最初的想法是将
groupId
作为用户模型的一部分,这样当我在登录时检索帐户详细信息时,我可以指向特定的组。我有点不喜欢这个,因为如果你将来想成为 2 个或更多团体的一部分怎么办? (可能是想多了)
来自 SQL 世界,我很想拥有一个 homeUsers 集合,但这违背了 NoSQL 的目的,不是吗?
事实上,我在组内有一个用户集合,即组 -> groupId -> users。这只是允许我显示用户而不进行不必要的查询。
提前致谢。
我最初的想法是将
作为用户模型的一部分,这样当我在登录时检索帐户详细信息时,我可以指向特定的组。groupId
是的,这是一种常见的方法,但仅当用户属于单个组时才有效。
我有点不喜欢这个,因为如果你将来想成为 2 个或更多小组的一部分怎么办?
在这种情况下,您可以将其另存为数组类型字段中的值,而不是将
groupId
保存为文档内的单独字段。这样,您就可以根据需要添加任意数量的组 ID。您还可以根据组 ID 在安全规则中限制访问。
来自 SQL 世界,我很想拥有一个
集合,但这违背了 NoSQL 的目的,不是吗?homeUsers
这也是一个解决方案,但它会有点昂贵,因为当您阅读整个子集合时,您需要为下载的每个文档支付读取操作费用。使用之前的解决方案,您只需为单次阅读付费。
事实上,我在组内确实有一个“用户”集合,即组 -> groupId -> users。这只是允许我显示用户而不进行不必要的查询。
如前所述,这种方法也有效,但您必须进行数学计算,看看哪种解决方案对于您将执行的查询来说更经济实惠。