我认为这很简单,但似乎无法创建正确的查询。我在iOS上将Swift与Firebase实时数据库一起使用。

考虑以下Firebase结构:

-DATA
--UID
---LEVEL1
----HIGHSCORE

我正在尝试创建一个查询,以查找某个级别的特定HIGHSCORE数字是否大于本地变量。如果是这样,我希望返回的值是Firebase中的较高值。如果相同或更低,我希望返回值为null。

我尝试了许多不同的查询,这是一个示例:
ref.child("DATA/UID/LEVEL1/HIGHSCORE").queryStarting(atValue: 5000).observeSingleEvent(of: .value, with:

我知道这从根本上是不正确的,但是我认为这表明了我正在尝试做的事情。

在此先感谢您的帮助。

麦克风

编辑:这是实际的JSON示例:
{
 "DATA" : {
    "USERID" : {
      "LEVEL1" : {
        "HIGHSCORE" : 5000,
      }
    }
  }
}

最佳答案

我能想到的唯一方法是使用orderByValue:

ref.child("DATA/UID/LEVEL1").orderByValue().queryStarting(atValue: 5000).observeSingleEvent(of: .value, with:

但这仅在HIGHSCORELEVEL1下的唯一子节点时才有效。即使这样:在惯用的方法上,它也没有任何带宽或性能:
ref.child("DATA/UID/LEVEL1/HIGHSCORE").observeSingleEvent(of: .value, with: { (snapshot) in
  if snapshot.exists() {
    val score = snapshot.value as! Int
    if score > 5000 {
      ...
    }
  }
})

10-06 02:33