Firestore - 用于设置每个用户数据的逻辑收集模式?

nic*_*ook 3 firebase angular google-cloud-firestore

我正在尝试为我正在构建的 angular 应用程序实现一个结构,每个用户都有自己的用于登录的数据集,因此每个用户都应该有自己的“费用”、“联系人”、“发票”集合。

据我了解,因此应该有具有用户 uid 值的 id 的文档,这些文档可以通过搜索用户数据的主集合的查询来访问。因此,在 Firestore 控制台的顶级“联系人”集合中,应该有标有每个用户 uid 的文档,然后这些文档包含他们自己可用的联系人数组。

演示如下:

提议的 Firestore 数据库架构/结构的演示

这看起来是实现每个用户数据的正确方法吗?

Fra*_*len 5

数据建模没有单一的“正确”方法。这一切都取决于我们应用程序的用例。

一种选择是users为每个用户创建一个包含文档的顶级集合,然后每个用户拥有contacts,expensesinvoices集合。

但这只是一种方式,如上所述,这一切都取决于您的用例。例如,对于上面的模型,您无法查询所有用户的发票。如果您希望在两个用户之间共享发票,则需要将其添加到/users/$uid/invoices每个用户的集合中。如果这不符合您应用的用例,那么您可以考虑将发票存储在顶级/invoices集合中,并添加每个用户对它们的引用。

有太多的变体来完善一刀切的解决方案,这就是为什么你找不到没有标准应用程序的标准数据模型。两者总是齐头并进。

要了解更多信息,我建议阅读这篇关于NoSQL 数据建模的文章。