在 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 种产品所花费的时间总是一样。