使用 child id = x 如果未知 parents 获取 childobject
Get childobject with child id = x if unknown parents
因此,考虑以下数据结构:
{
"speed" : {
"scores" : {
"aHOBsddilrQ2lX3fal8v" : {
"RrbEpWwfEAeVpnbXabSP" : {
"event" : 959140,
"judge" : "Svante",
"zETdMyzb2OWgrVq9GJwv" : {
"score" : 65,
"timestamp" : 1466355355
},
"Jd0wtYEs74A2wc47LI7F" : {
"score" : 75,
"timestamp" : 1466355465
}
}
}
}
}
}
如果我知道 authuid
和 event:
的值但 randomid 的(两者都不是是独一无二的)
我尝试了 for ()
和 .orderBy[Child|Key|Value]().equalTo().limitToLast(1);
的不同方法(none 看起来不错,甚至不屑于分享...)但没有用。我目前有一个非常肮脏和骇人听闻的解决方案,如果我向树的第二深部分(使用 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',...
因此,考虑以下数据结构:
{
"speed" : {
"scores" : {
"aHOBsddilrQ2lX3fal8v" : {
"RrbEpWwfEAeVpnbXabSP" : {
"event" : 959140,
"judge" : "Svante",
"zETdMyzb2OWgrVq9GJwv" : {
"score" : 65,
"timestamp" : 1466355355
},
"Jd0wtYEs74A2wc47LI7F" : {
"score" : 75,
"timestamp" : 1466355465
}
}
}
}
}
}
如果我知道 authuid
和 event:
的值但 randomid 的(两者都不是是独一无二的)
我尝试了 for ()
和 .orderBy[Child|Key|Value]().equalTo().limitToLast(1);
的不同方法(none 看起来不错,甚至不屑于分享...)但没有用。我目前有一个非常肮脏和骇人听闻的解决方案,如果我向树的第二深部分(使用 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',...