【问题标题】:How to get a nested object in firebase database [closed]如何在firebase数据库中获取嵌套对象[关闭]
【发布时间】:2016-11-03 03:53:57
【问题描述】:

我们有一个问题。我们对 firebase 很陌生,并且在尝试在新数据库中获取一些 FK(或其他数据库的引用)时遇到了一些问题。

在字段用户中,我想获得对表用户的参考。因此,当我尝试从表 Accounts 获取数据并检查用户 ID 时,我应该能够获取 user_tracklist 而不是进行 2 次查询

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    您可以将tracklist 节点保存在accounts/{accountId}/user 中,因此您将拥有tracklist 的两份副本,一份在用户内部,另一份在帐户端点内部。

    在端点users 内也保存accountId,以便能够在trackinglist 实体发生某些更改时更新端点accounts/{accountId}/user/trackinglist 上的trackinglist 的副本。

    【讨论】:

    • 这就是我不想将数据存储两次的问题。我只想在我的表帐户中有一个参考密钥,以引用我的表用户。当数据变大时,将数据存储两次将导致大量数据。我只是想知道我是否可以在该领域获得参考
    • 在这种情况下,您必须向users 进行第二次请求,没有办法存储一些可以让您获得tracklists 的参考,唯一的选择是重复与“做两个请求”。我个人更喜欢重复,因为如果你有很多数据可能会导致性能问题,你必须使用重复,nosql 数据库就是为此目的,这里我们没有连接,我们在 sql 数据库中的外键.
    【解决方案2】:

    请走出relational DB世界。 firebase-database 没有 JOIN,WHERE 子句的概念。它适用于JSON Objects 的概念。

    记住:

    1. Firebase 建议尽可能对数据进行非规范化处理。她喜欢重复数据

      参考:Denormalizing Your Data is Normal

    2. Firebase 使用 Sockets,您建立了一次连接,然后处理您的查询(给我一个帐户,现在给我该帐户的用户,等等等等)。因此,如果需要,不必担心进行多个查询。

    Refer to this SO Question

    在您的数据结构中,您尝试对数据进行扁平化/非规范化,但是

    改变这个:

    user:"{deftones:true}"
    

    收件人:

    -user
       -deftones:true
    

    要了解如何检索参考数据,您必须查看我上面提到的文章

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-30
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多