在 Firestore 中存储用户特定数据的最佳方式

red*_*fox 5 database-design nosql firebase google-cloud-firestore

我有一个应用程序,可以帮助店主通过简单的 API 驱动界面管理库存。

我的应用程序将所有数据存储在 Firestore 上。我的简化数据库如下所示:

-users
    -name
    -email
    -uid

-products
    -atts
    ...
    -ownerId

-someOtherThing
    -atts
    ...
    -ownerId
Run Code Online (Sandbox Code Playgroud)

这个想法是,只有ownerId 与当前用户ID 匹配的文档才能被用户访问。ID=5 的用户只能访问与ownerId=5 匹配的项目。

这是存储这些数据的好方法吗?我担心我最终会在该集合中得到数千个文档,并且通过“ownerId”查询它们可能不是解决这个问题的最佳方法。另一方面,我最终可能也会有数百个用户,这可能会让为每个用户引入几个新系列的设计变得糟糕?

从设计角度来说,更好的方法是什么?

Fra*_*len 7

虽然“一个好方法”是主观的并且完全取决于应用程序的用例,但您所提议的是在 Firestore 中存储数据的一种非常常见的方法。

您对用户数量和其他文档的担忧是没有根据的,因为 Firestore 保证为特定用户返回(比如说)产品的性能仅取决于返回的产品数量,而不取决于数据库中的产品总数。

因此,如果您有 10 种产品ownerId,那么无论有多少其他用户/产品,检索这 10 种产品所需的时间将始终相同。