且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Firebase查询无法正常执行

更新时间:2023-02-06 21:03:50

我认为你是在这里优先查询,这只有在你的学校有优先考虑时才会有效(不太可能)。通过明确的排序来解决它: queryOrderedByKey()。然后还要确保循环覆盖结果中的子元素,因为查询将返回一个列表,即使只有一个结果:

$ .queryEqualToValue(Random School Name)
.observeSingleEventOfType(。code $ database
.child(Schools)
.queryOrderedByKey值,withBlock {快照in
为snapshot.children中的childSnapshot {
print(snapshot)
}
})
pre>

I am trying to execute a Firebase query and it doesn't seem to be working properly. I am trying to access the name of a School I have in the Firebase Database. The database looks like this:

Schools {

    Random School Name {

        schoolLocation: Random Location
        uid: random UUID

    }
}

If I use the following code to get the info of the "Random School Name", I get a snapshot of 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)")

}

If I use this line of code, however, the query gives me the name of the school back, as I would expect. I want to be able to track if there is an error using observeSingleEventOfType:

let query = databaseReference.child("Schools").queryEqualToValue("Florida Institute of Technology")

print(query)

Why isn't this working?

I think you're querying by priority here, which will only work if your schools have a priority (highly unlikely).

If that is indeed the problem, solve it by being explicit about the ordering: queryOrderedByKey(). Then also be sure to loop over the children in the result, since a query will return a list, even if there's only one result:

databaseReference
    .child("Schools")
    .queryOrderedByKey()
    .queryEqualToValue("Random School Name")
    .observeSingleEventOfType(.Value, withBlock: { snapshot in
        for childSnapshot in snapshot.children {
            print(snapshot)
        }
    })