在 Firestore 中存储用户特定数据的最佳方式
Best way to store user-specific data in Firestore
我有一个应用程序可以帮助店主通过一个简单的 API 驱动的界面来管理他们的库存。
我的应用程序将所有数据存储在 Firestore 上。我的简化数据库如下所示:
-users
-name
-email
-uid
-products
-atts
...
-ownerId
-someOtherThing
-atts
...
-ownerId
这个想法是,用户只能访问 ownerId 与当前用户 ID 相匹配的文档。 ID=5 的用户将只能访问与 ownerId=5 匹配的项目。
这是存储数据的好方法吗?我担心我最终会在该集合中得到数千个文档,并通过“ownerId”查询它们可能不是解决这个问题的最佳方法。另一方面,我最终可能也会有数百个用户,这可能会使为每个用户引入几个新集合的设计变得糟糕?
什么是更好的设计方法?
虽然“好方法”是主观的并且完全取决于您应用的 use-cases,但您提出的是在 Firestore 中存储数据的一种非常常见的方法。
您对用户数量和其他文档的担忧是没有根据的,因为 Firestore 保证为特定用户退回(比如说)产品的性能仅取决于产品数量 returns,而不是数据库中的产品总数。
因此,如果您 ownerId
有 10 种产品,那么无论有多少其他 users/products,检索这 10 种产品所花费的时间总是一样。
我有一个应用程序可以帮助店主通过一个简单的 API 驱动的界面来管理他们的库存。
我的应用程序将所有数据存储在 Firestore 上。我的简化数据库如下所示:
-users
-name
-email
-uid
-products
-atts
...
-ownerId
-someOtherThing
-atts
...
-ownerId
这个想法是,用户只能访问 ownerId 与当前用户 ID 相匹配的文档。 ID=5 的用户将只能访问与 ownerId=5 匹配的项目。
这是存储数据的好方法吗?我担心我最终会在该集合中得到数千个文档,并通过“ownerId”查询它们可能不是解决这个问题的最佳方法。另一方面,我最终可能也会有数百个用户,这可能会使为每个用户引入几个新集合的设计变得糟糕?
什么是更好的设计方法?
虽然“好方法”是主观的并且完全取决于您应用的 use-cases,但您提出的是在 Firestore 中存储数据的一种非常常见的方法。
您对用户数量和其他文档的担忧是没有根据的,因为 Firestore 保证为特定用户退回(比如说)产品的性能仅取决于产品数量 returns,而不是数据库中的产品总数。
因此,如果您 ownerId
有 10 种产品,那么无论有多少其他 users/products,检索这 10 种产品所花费的时间总是一样。