如果您有新设备和账户,设备商店应该如何保存groupId? [已关闭]

问题描述 投票:0回答:1

应用程序用户存储在集合

users
中,组存储在集合
groups
中。在较高级别上,用户是一个组的一部分。当您登录时,系统会要求您加入或创建群组。

注册时我会用

shared preferences
存储 groupId。

如果你有新设备并且已有账户,设备商店应该如何保存groupId?

我最初的想法是将

groupId
粘贴到用户模型中,这样当我在登录时检索帐户详细信息时,我可以指向特定的组。但您将来可能想成为两个或更多团体的一部分。

来自 SQL 世界,我很想拥有一个 homeUsers 集合,但这违背了 NoSQL 的目的。

我在组内有一个用户集合;即组 -> groupId -> 用户。这使我可以显示用户而无需进行不必要的查询。

firebase google-cloud-firestore firebase-realtime-database database-design nosql
1个回答
1
投票

我最初的想法是将

groupId
作为用户模型的一部分,这样当我在登录时检索帐户详细信息时,我可以指向特定的组。

是的,这是一种常见的方法,但仅当用户属于单个组时才有效。

我有点不喜欢这个,因为如果你将来想成为 2 个或更多小组的一部分怎么办?

在这种情况下,您可以将其另存为数组类型字段中的值,而不是将

groupId
保存为文档内的单独字段。这样,您就可以根据需要添加任意数量的组 ID。您还可以根据组 ID 在安全规则中限制访问。

来自 SQL 世界,我很想拥有一个

homeUsers
集合,但这违背了 NoSQL 的目的,不是吗?

这也是一个解决方案,但它会有点昂贵,因为当您阅读整个子集合时,您需要为下载的每个文档支付读取操作费用。使用之前的解决方案,您只需为单次阅读付费。

事实上,我在组内确实有一个“用户”集合,即组 -> groupId -> users。这只是允许我显示用户而不进行不必要的查询。

如前所述,这种方法也有效,但您必须进行数学计算,看看哪种解决方案对于您将执行的查询来说更经济实惠。

© www.soinside.com 2019 - 2024. All rights reserved.