javascript - 如果 parent 未知,则获取子对象 id = x

标签 javascript firebase angularfire firebase-realtime-database

因此,考虑以下数据结构:

{
  "speed" : {
    "scores" : {
      "aHOBsddilrQ2lX3fal8v" : {
        "RrbEpWwfEAeVpnbXabSP" : {
          "event" : 959140,
          "judge" : "Svante",
          "zETdMyzb2OWgrVq9GJwv" : {
            "score" : 65,
            "timestamp" : 1466355355
          },
          "Jd0wtYEs74A2wc47LI7F" : {
            "score" : 75,
            "timestamp" : 1466355465
          }
        }
      }
    }
  }
} 

如果我知道 authuidevent: 的值,但都不知道 randomid 的 (两者都是独一无二的)

我尝试了不同的方法 for ().orderBy[Child|Key|Value]().equalTo().limitToLast(1); (没有一个看起来足够好,甚至不需要分享......)这不起作用。我目前有一个非常肮脏和黑客的解决方案,如果我向树的第二个最深部分添加一个值(使用 for.length - 3),该解决方案就会崩溃。有没有办法做到这一点清洁?

最佳答案

Firebase 数据库可以查询嵌套子级,但前提是您知道路径。您所寻找的内容超出了 Firebase 的查询功能,后者始终必须在查询能力与数据库的实时性之间取得平衡。

与 NoSQL 数据库一样,解决方案是更改数据模型以满足您的需求。对于本例,我将设置一个节点,该节点在该事件的 ID 下包含每个事件的最新分数:

{
  "speed" : {
    "mostRecentScoresPerEvent" : {
      "event959140": {
        "score" : 75
      }
    }
  }
} 

现在您可以通过简单的设置操作更新分数:

ref.child('speed/mostRecentScoresPerEvent/event'+eventId).set(42);

并使用以下方式阅读:

ref.child('speed/mostRecentScoresPerEvent/event'+eventId).on('value',... 

关于javascript - 如果 parent 未知,则获取子对象 id = x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909738/

相关文章:

javascript - 在 JavaScript 中动态创建 JSON 对象

javascript - jQuery,Firebase,如何访问 promise 内的变量

javascript - Angular-ui-router 需要登录和用户级别

javascript - 如何在表达式中使用 Angular 变量?

javascript - 如何始终从 JavaScript 对象字面量调用函数,而不仅仅是在创建对象时

swift - 使用 Swift 通过 Firebase 进行多标签搜索

ios - Firebase 实时数据库名称和值

javascript - Angularfire firebase 身份验证 - 谷歌

javascript - 如果没有使用 AngularFire 2 登录,则重定向到登录页面

javascript - 需要一些关于使用 React 的动态表单的建议