我认为这很简单,但似乎无法创建正确的查询。我在iOS上将Swift和Firebase实时数据库一起使用。
考虑以下Firebase结构:
-DATA
--UID
---LEVEL1
----HIGHSCORE
我正在尝试创建一个查询,以查找某个级别的特定HIGHSCORE数字是否大于本地变量。如果是这样,我希望返回的值是Firebase中的较高值。如果相同或更低,我希望返回值为空。
我尝试了许多不同的查询,这是一个示例:
ref.child("DATA/UID/LEVEL1/HIGHSCORE").queryStarting(atValue: 5000).observeSingleEvent(of: .value, with:
我知道这从根本上是不正确的,但是我认为这表明了我正在尝试做的事情。
在此先感谢您的帮助。
迈克
编辑:这是实际的JSON示例:
{
"DATA" : {
"USERID" : {
"LEVEL1" : {
"HIGHSCORE" : 5000,
}
}
}
}
答案 0 :(得分:1)
我唯一想到的方法是使用orderByValue
:
ref.child("DATA/UID/LEVEL1").orderByValue().queryStarting(atValue: 5000).observeSingleEvent(of: .value, with:
但这仅在HIGHSCORE
是LEVEL1
下的唯一子节点的情况下才有效。即使这样:它也没有比惯用方法更宽的带宽或性能:
ref.child("DATA/UID/LEVEL1/HIGHSCORE").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() {
val score = snapshot.value as! Int
if score > 5000 {
...
}
}
})