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