【问题标题】:Firebase deep query in Swift, with 3 unknown node names of the reference path - is it possible?Swift 中的 Firebase 深度查询,参考路径的 3 个未知节点名称 - 有可能吗?
【发布时间】:2019-09-22 17:54:33
【问题描述】:

我让数百名玩家玩我创建的游戏,每个团队的分数都位于我的火力基地结构的这条路径上:

myref.firebaseio.com/UK/日期在这里/Tournaments/时间在这里/ 此处为玩家姓名/最终得分

最后一个键是“Final Score”,后面是球队的得分作为值。

问题是 date heretime hereplayer name here 节点根据游戏的日期和时间而有所不同播放了,玩家选择的名字。

我想简单地从所有玩家中提取每个分数并将它们添加到一个数组中,以计算平均值。

我正在寻找一种方法来告诉查询“为我找到一个“最终分数”键,向下几个子节点,其中 3 个名称未知,然后为我获取值。对数据库中的所有条目执行此操作“

我已经设法通过未知路径下降了 1 级,但不超过 1 级。

阅读深度查询对我没有帮助。是否可以这样做,或者我必须更改我的数据库结构才能实现这一点?

提前感谢您的帮助

【问题讨论】:

    标签: swift firebase


    【解决方案1】:

    在 Firebase 实时数据库中,查询只能包含一个未知级别。换句话说,查询操作是在节点列表上,而不是在节点树上。如果您有多个嵌套级别,则需要找到不同的方法来搜索它。这可以是客户端(用于小型数据集),也可以是存储一个包含您要查询的信息的平面列表。

    在您的情况下,后者将是“最终得分”值的平面列表,无论其日期和时间如何。

    另见:

    【讨论】:

    • 这也是我的怀疑弗兰克 - 我将继续使用平面列表解决方案。非常感谢您的澄清
    【解决方案2】:

    您需要遍历所有未知值才能获得最终分数 .. 像这样

     ref.child("UK").observeSingleEvent(of: .value) { (snap) in
                let dates  = snap.children.allObjects as! [DataSnapshot]
                for date in dates{ // To get all Unknown dates
                    let tournmentSnap = date.childSnapshot(forPath: "Tournaments").children.allObjects as! [DataSnapshot]
                    for unkownTime in tournmentSnap{  // To get all Unknown Time
                        let playerSnap = unkownTime.children.allObjects as! [DataSnapshot]
                        for play in playerSnap{ // To get all Unknown Players
                            print(play.value) // Final Score
                        }
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2022-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多