gpt4 book ai didi

firebase - Firestore 的复杂数据模型

转载 作者:行者123 更新时间:2023-12-03 23:17:12 26 4
gpt4 key购买 nike

我正在使用 Firestore + angularfire 构建我的第一个应用程序,由于我缺乏 Firestore 的经验,定义数据模型非常困难。我需要你的帮助。

我有以下 实体和依赖项 .

  • 餐厅:它们是独立的,可以由应用程序的用户注册。
  • 创建餐厅的用户成为“所有者”。他/她可以邀请其他用户成为餐厅的“服务员”。
  • 用户可以从一个或多个餐厅(可能来自不同的所有者)接收“成为我的服务员/女服务员”的邀请。
  • 我们还有另一个实体“客户”。此实体的条目包含有关订购的菜肴和饮料、价格、小费等的数据...

  • 然后是以下 规则
  • 每个业主都可以看到他/她餐厅内的任何“客户”数据,但不能在其他餐厅看到。
  • 每个“服务员/女服务员”都可以看到他/她服务过的顾客的数据(在任何餐厅),但不能看到其他顾客的数据。

  • 如您所见,有多个依赖项,包括多个 OR 条件,Firestore 中的“where”过滤器不支持这些依赖项。因此,我不确定是否应该将客户集合嵌套到每个餐厅文档中,或者是否应该将所有客户都放在根集合中,然后对其进行过滤。

    您能否帮我解决这个问题,并提供一些关于您认为如何使用 Firestore 规则管理它的最佳方式的想法?

    最佳答案

    这是基于您所说的建议:

    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 中有评论,当您尝试一起过滤和排序时...

    在这种情况下,您可以进行任何查询,例如餐厅的顾客,一家餐厅的服务员或服务员的餐厅。
    像这样:
    customersRef.where("restaurants." + idRestaurant, '>', 0).orderBy("restaurants." + idRestaurant);

    希望这可以帮助!

    关于firebase - Firestore 的复杂数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48452685/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com