我正在尝试执行Firebase查询,但它似乎无法正常工作。我正在尝试访问Firebase数据库中的学校名称。数据库如下所示:
Schools {
Random School Name {
schoolLocation: Random Location
uid: random UUID
}
}
如果我使用以下代码获取“Random School Name”的信息,我会得到null的快照:
databaseReference.child("Schools").queryEqualToValue("Random School Name").observeSingleEventOfType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in
print(snapshot)
}) { (error: NSError) in
self.displayError("Search Failed", message: "We couldn't search for that - \(error.code): \(error.localizedDescription)")
}
但是,如果我使用这行代码,那么查询会给我一个学校的名字,正如我所料。我希望能够使用observeSingleEventOfType
跟踪是否存在错误:
let query = databaseReference.child("Schools").queryEqualToValue("Florida Institute of Technology")
print(query)
为什么这不起作用?
答案 0 :(得分:1)
我认为您在这里优先查询,只有在您的学校有优先权(极不可能)时才会有效。
如果这确实是问题,请通过明确排序来解决它:queryOrderedByKey()
。然后还要确保循环覆盖结果中的子项,因为查询将返回一个列表,即使只有一个结果:
databaseReference
.child("Schools")
.queryOrderedByKey()
.queryEqualToValue("Random School Name")
.observeSingleEventOfType(.Value, withBlock: { snapshot in
for childSnapshot in snapshot.children {
print(snapshot)
}
})
答案 1 :(得分:1)
嘿Dan你应该尝试这个查询来检索特定的数据
self. databaseReference.queryOrderedByChild("Schools").queryEqualToValue("Random School Name").observeSingleEventOfType(.Value, withBlock: { snapshot in
print(snapshot.value)
})
此查询返回主要学校的随机学校名称