【问题标题】:How to combine multiple firebase docs to get a combined result?如何组合多个 firebase 文档以获得组合结果?
【发布时间】:2022-01-12 01:02:31
【问题描述】:

在我的 firebase 数据库中,我有 3 个集合:

Users
  {user_id}: {name: "John Smith"}

Items
  {item_id}: {value: 12345}

Actions
  {action_id}: {action: "example", user: {user_id}, items:{item_id}}

基本上,我没有将用户和项目存储在 Actions 集合下,而是保留一个 ID。但现在我需要一个所有操作的列表,这也需要来自用户和项目集合的信息。如何有效地查询 firebase,以便获得如下所示的结果:

{
    action: "example",
    user: {
       name: "John Smith"
    },
    item: {
       value: 1234
    }
}

【问题讨论】:

  • Firebase 实时数据库和 Cloud Firestore 是两个独立的数据库。请仅使用相关标签标记您的问题,不要同时使用两者。

标签: firebase google-cloud-firestore firebase-security


【解决方案1】:

不幸的是,在firebase或类似的数据库中没有这样的事情,基本上,你正在寻找一个传统的连接,这在NoSQL数据库中是不推荐的。

如果你想在 firebase 中做,你需要:

  1. 在这种情况下,从您的主集合 Actions 中获取您要查找的元素。
  2. 然后您需要再次调用 Items 集合 where item_id == action.item_id。
  3. 然后在操作中赋值["Item"] = item_gotten。

正如我所说,这不是推荐的用途,通常,当您使用 NoSQL 数据库时,您会期望一个非规范化结构,您需要从您的应用程序中保存整个 Item,在 Action JSON 中,以及在 Item .是的,您将有重复的数据,但这对于这种模型来说很好。此外,您不应期望整个对象键中的一个特定对象有太多更改。如果您正在管理大量更改,则可能使用了不正确类型的数据库。

对于聚合查询参考,您可以查看:https://firebase.google.com/docs/firestore/solutions/aggregation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多