当前位置: 首页 > 知识库问答 >
问题:

Firebase云端火力还原多对多关系

师赤岩
2023-03-14

如何以多对多关系从Firebase Cloud Firestore构建和查询数据?

我有公司和承包商。一个承包商可以为多个公司工作,一个公司可以有多个承包商。这是一种简单的多对多关系。我希望能够回答有关公司和承包商的问题:

给定一家公司,谁是目前的承包商。给承包商他们在为什么公司工作。什么是正确的方式来构建Cloud Firesta中的数据?

共有2个答案

仲孙俊贤
2023-03-14

正如安德烈·利马(AndréLima)在他的回答中所解释的,你可以使用数组来表示关系。但我不认为这两个集合都需要一个用于映射的数组字段。只有一个集合需要为关系数组设置字段。

companies: {
  contractors: ['contractor_id_1', 'contractor_id_2', 'contractor_id_2']
}

查询时,您可以使用数组包含运算符根据数组值进行筛选。

示例查询(Web):

companiesRef.where("contractors", "array-contains", "contractor_id_1")

您还可以根据需要在中使用,并且数组包含任何运算符。

郗学
2023-03-14

你可以有一个地图字段的承包商项目,该字段的关键字是公司的关键字,并且值可以是真实的,时间戳可以帮助订购。和Companys,带有一个以承包商键为键和一些值的映射字段。https://firebase.google.com/docs/firestore/solutions/arrays中提到了这个问题,当你试图过滤和排序时...

Contractors
  companies
    idCompany1: timestamp
    idCompany2: timestamp
    idCompany3: timestamp

Companies
  contractors
    idContractor1: timestamp
    idContractor2: timestamp

在这种情况下,您可以像本公司承包商或本承包商的公司一样提出任何疑问。这样地:

fireStore.collection("Companies").whereField("contractors." + idContractor, isGreaterThan: 0).order(by: "contractors." + idContractor, descending: true)

是的,在任何任务中都必须更新这两个位置

希望这有帮助!

 类似资料:
  • 问题内容: 我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,而一个公司可以有多个承包商。这是直接的多对多关系。我希望能够回答有关公司和承包商的问题: 给定一家公司,他们是当前的承包商。 给承包商一个他们要工作的公司。 在Firebase中构造数据的替代方法有哪些? 问题答案: 自我回答确实是对此进行建模的一种方法。它可能是在关系数据库中建模的最直接等效方法: 承办商

  • 我有一个Firebase数据库。我有公司和承包商。一个承包商可以为多个公司工作,一个公司可以有多个承包商。这是一种简单的多对多关系。我希望能够回答有关公司和承包商的问题: 给定一家公司,谁是当前的承包商 给定一个承包商,他们为哪些公司工作 在firebase中构建数据的替代方案是什么?

  • 问题内容: 伙计们,我正在努力为我的公司制作一个简单的票证生成系统,以吸引人。目前,我的MSSQL数据库中有一个名为的表,另一个名为的表。 我的应用程序是C#Windows窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的comboBox,由填充。生成票证后,以这种形式输入的所有信息都将与from一起存储。 效果很好,但是后来我的客户要求我添加选项,以便可以在一张票上分配3名工程

  • 问题内容: 我目前正在使用ActiveAndroid,并且在过去的几个小时里一直在尝试建立多对多关系,但是我还是无法正常工作。我希望你能帮助我: 我有“学生”和“课程”的模型,一个学生可以有很多课程,而一个课程有很多学生。基本上,这就是我在“ StudentCourse”模型中所拥有的: 现在,我要做的是使用以下代码获取“课程X中的所有学生”: 但是我收到以下错误: java.lang.Class

  • 在本章中,让我们了解和学习多对多的关系。要表示多对多关系,必须创建第三个表(通常称为联接表),将多对多关系分解为两个一对多关系。 为此,我们还需要添加一个联接表。 下面先添加一个表。表的定义如下所示 - 现在创建一个多对多的关系。假设有多个作者在多个项目上工作,反之亦然。 如您所知,我们在中有一个字段,所以为它创建了一个表。但现在不再需要这个字段了。 选择字段,然后按下删除 按钮,将看到以下消息。

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?