Firebase查询未正确执行

时间:2016-09-08 01:16:26

标签: ios swift xcode firebase firebase-realtime-database

我正在尝试执行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)

为什么这不起作用?

2 个答案:

答案 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)


        })

此查询返回主要学校的随机学校名称