我正在使用Firestore + angularfire构建我的第一个应用程序,由于我缺乏Firestore的经验,因此很难定义数据模型。我需要你的帮助。
我有以下实体和依赖项。
然后是以下规则
因为你可以看到有多个依赖关系,包括几个OR条件,它们不会被"其中" Firestore中的过滤器。因此,我不确定是否应该将客户集合嵌入到每个餐馆文档中,或者我是否应该将所有客户都放在根集合中,然后对其进行过滤。
请您帮我解决这个问题,并提供一些关于您认为如何使用Firestore规则管理它的最佳方法的想法?
答案 0 :(得分:3)
这是基于你所说的消息:
Restaurants
[id] (document)
owner: idUser(Owner)
waiters (map)
idUser1: timestamp
idUser2: timestamp
idUser3: timestamp
customersIn (collection)
[idCustomer1]
itens: (map)
french fries: 10
water: 3
[idCustomer2]
itens: (map)
hot dog: 6
soda: 4
Customers
[id] (document)
name
restaurants (map)
idRestaurant1: timestamp
idRestaurant2: timestamp
Users
[id] (document)
waiterIn (map)
idRestaurant1: timestamp
idRestaurant2: timestamp
当您尝试过滤并排序时,https://firebase.google.com/docs/firestore/solutions/arrays会对此aproach进行评论...
在这种情况下,您可以提出任何疑问,例如餐厅的客户,一家餐馆的服务员或服务员的餐厅。 像这样:
customersRef.where("restaurants." + idRestaurant, '>', 0).orderBy("restaurants." + idRestaurant);
希望这有帮助!