猿问

如何正确使用 Firestore

我想知道什么更好:

该示例是一个购物应用程序,它与主屏幕有关,其中包含每个可用项目的列表。

A) 一个文档,例如“productList”,其中每个类别都有一个 Map,然后是另一个包含每个 productId 的 Map,以及一个包含产品标题、展示图像和价格等数据的列表。
示例代码:

Stream stream = db.collection('products').document('productList').snapshots().asyncMap((list) => list.data);

或者

B)存储数据的称为“产品”的集合中的许多文档。
示例代码:

Stream stream = db.collection('products').where('category', isEqualTo: "CategoryName").snapshots().map((list) => list.documents.map((doc) => doc.data));

(两者都在工作,但是对于 B,我得到了 3 个产品 muuuuch 更多的文档读取,因此我认为 A 会节省很多产品读取,但如果该方法可能存在问题,则提出问题)

非常感谢你 :)


侃侃尔雅
浏览 192回答 1
1回答

白衣染霜花

如果您采用第一种尝试将所有内容放入单个文档的方法,那么当产品数量变大时,您将遇到可伸缩性问题。Firestore 文档只能包含 1MB 的数据。之后,对它的写入将失败,并且您将很难重组您的应用程序及其数据以解决问题。存储大量项目的唯一“正确”方法是为每个项目使用一个文档。例外情况是当您对项目数量有硬性保证,并且您绝对确定所有这些项目的数据始终可以放入一个文档中。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答