在 Firestore 中存储购物篮的最佳做法是什么?

What is the best practice for storing shopping basket in Firestore?

我正在创建一个需要购物篮功能的 flutter 应用程序。我正在使用 Firestore 保存用户购物篮中的内容,但不知道如何最好地做到这一点。

目前,我有一个名为 'baskets' 的集合,其中包含文档(以用户 ID 作为参考)。

在这些文档中,我是否应该有一个 dictionary/map 字段,其键 = productID 和值 = 数量,或者我应该为用户添加到他们购物车中的每个产品创建一个字段?

或者是否有更好的方法(仍然使用 Firestore)。

你走在正确的轨道上。创建一个名为 baskets 的根目录 collection,在该根目录下每个用户都有自己的基于用户唯一 UID 的文档是很好的。现在,在每个用户的文档中,您可以添加一个名为 cartItems 的 sub-collection,您将在其中为每个产品保存一个文档。

对于每个产品,您可以添加其 名称价格数量 以及其他描述性产品字段。这样就不必拥有同一产品的多个文档,只需为每个产品添加一个文档,以及一个名为 amount 的字段,当用户添加同一产品的更多项目时,该字段会递增。

您可以通过提取所有文档、将产品的所有金额字段乘以它们的单个价格等相加,来计算他们购物车的总成本。

您可以增加/减少产品数量,或者通过删除产品文档将产品从他们的购物车中完全删除。

主要的collection篮子应该是这样的:

虽然您的 cartItems subcollection 可能如下所示:

祝你好运!