2016-07-06 11 views
0

ich den Aufbau ein ein FIRDatabaseQuery mit dem folgenden Code:Warum funktioniert die Firebase-Datenbank queryEqualToValue nicht?

let ref = FIRDatabase.database().reference() 
let pointRef = ref.child("points") 
let query = pointRef.queryOrderedByChild("location").queryEqualToValue(locationName) 

query.observeSingleEventOfType(FIRDataEventType.ChildAdded, withBlock: { (snapshot) in 
    ... 
} 

Der Block genannt wird, aber ich mag meine Ergebnisse von einem anderen Feld in jedem Punkt bestellen. Da es nicht möglich ist, zwei queryOrderedByChild s miteinander zu verketten, habe ich den Code folgendermaßen geändert (ich würde die Sortieranfrage später verketten).

let ref = FIRDatabase.database().reference() 
let pointRef = ref.child("points") 
let query = pointRef.queryEqualToValue(locationName, childKey: "location") 

query.observeSingleEventOfType(FIRDataEventType.ChildAdded, withBlock: { (snapshot) in 
    ... 
} 

Der Block hier wird nie aufgerufen. Warum nicht? Ich würde erwarten, dass diese Anrufe die gleichen sein werden (abgesehen von der ersten nach Ort sortiert).

+0

'lassen Sie query = pointRef.child (" location "). QueryEqualToValue (locationName)' –

Antwort

0

Es scheint, dass ich observeSingleEventOfType auf der pointRef, nicht die query selbst anrufen sollte. Der aktualisierte Code:

let ref = FIRDatabase.database().reference() 
let pointRef = ref.child("points") 
let query = pointRef.queryEqualToValue(locationName, childKey: "location") 

pointRef.observeSingleEventOfType(.ChildAdded, withBlock: { (snapshot) in 
    ... 
} 

Obwohl das erklärt nicht, warum der erste Code funktioniert, aber die zweite nicht.

Verwandte Themen