Firebase Cloud Firestore 多对多关系

标签 firebase google-cloud-firestore

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

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

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

最佳答案

您可以拥有带有 map 字段的承包商项目,该字段的键作为公司键,并且值可以是 true 或时间戳以帮助订购。
以及具有以承包商键为键和一些值的 map 字段的公司。
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 Cloud Firestore 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625654/

相关文章:

firebase - 导出 Firestore 收集数据,编辑并重新上传

Firebase 部署 : Error: Could not detect language for functions at

firebase - 更改为 Firebase 3 后,我的 Firebase 队列没有执行任何操作

java - 递增数字作为 Firestore 文档名称?

javascript - 拉动最后添加的新子项

javascript - 我能知道一种在不提交 Angular 8 表单中的 "Confirm-Password"字段的情况下向 Firebase 提交数据的方法吗?

firebase - 添加 Firebase 库后 Flutter android 应用程序崩溃

flutter - 使用手机进行身份验证时如何修复 'user unauthenticated' firebase 存储

dart - flutter 错误 : Document references must have an even number of segments

reactjs - 如何将editedRows从DataGrid MUI更新到firebase?