【发布时间】:2022-01-09 12:06:21
【问题描述】:
所以我正在尝试为我的用例找出最佳结构。
目前看起来是这样的:
salesItems | userId | salesItem1 |
| salesItem2 | and so on.
因此,这些项目存储在以相应用户 ID 命名的文档中。
问题是,我希望这个文档大于 1MB。
所以我想也许我需要设置集合组查询。
因此我建立了这样的结构:
salesItems | userId | StoreA | documentId | startDate:
| endDate:
| salesItems:
| StoreB | documentId | startDate:
项目作为块存储在文档中的位置,将开始日期和结束日期作为字段,以便可以按日期查询这些块。
所以一个文档应该是这样的:
startDate: 01/01/2021
endDate: 12/31/2021
salesItems:[items]
我的目标是为用户查询所有商店中的所有文档。
所以我的问题是:
- 您认为有更好的解决方案吗?
- 如果您还认为我应该使用集合组查询, 什么是正确的安全规则?
在观看了tutorial关于集合组查询的fireships之后,似乎集合组查询需要特殊的安全规则。
目前我正在写作:
match /salesItems/{userId}/{documents=**} {
allow read, write: if true; //No restriction for testing purposes.
}
但这不起作用。
这是当前结构的截图。
注意我需要将物品存放在 2 盒子中。我打算删除 1 行,但这不是问题的一部分。
【问题讨论】:
-
您能否通过示例文档的屏幕截图阐明结构(每个集合中存储的确切内容)?术语有点混乱,例如
salesItems集合包含带有userId的文档,然后在子文档中再次包含 salesItems。 -
我已经上传了截图。
-
只是为了了解数据。是不是像 - 有用户,他们每个人都可以有多个商店,然后每个商店都有自己的商品(salesItems)?
-
差不多,是的。
-
我已经添加了另一个屏幕截图,其中包含我正在考虑的子集合结构
标签: firebase google-cloud-firestore nosql firebase-security