我想知道什么更好:该示例是一个购物应用程序,它与主屏幕有关,其中包含每个可用项目的列表。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 会节省很多产品读取,但如果该方法可能存在问题,则提出问题)非常感谢你 :)
1 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
如果您采用第一种尝试将所有内容放入单个文档的方法,那么当产品数量变大时,您将遇到可伸缩性问题。Firestore 文档只能包含 1MB 的数据。之后,对它的写入将失败,并且您将很难重组您的应用程序及其数据以解决问题。
存储大量项目的唯一“正确”方法是为每个项目使用一个文档。例外情况是当您对项目数量有硬性保证,并且您绝对确定所有这些项目的数据始终可以放入一个文档中。
添加回答
举报
0/150
提交
取消