2017-06-15 2 views
1

Unterstützung I eine Datenbank wie unten haben:Abfrage ein Stichwort in Firebase Datenbank

{ 
    "eventAttendees" : { 
    "fm" : { 
     "9" : "Alice", 
     "23" : "Khanh", 
     "43" : "Bach" 
    } 
    }, 
    "events" : { 
    "fm" : { 
     "date" : "2017-06-16", 
     "name" : "I love Firebase Meetup in Tokyo yesterday". 
    }, 
    "gm" : { 
     "date" : "2017-08-12", 
     "name" : "Meet Linh" 
    } 
    }, 
    "users" : { 
    "1" : { 
     "name" : "David" 
    }, 
    "2" : { 
     "name" : "Alice" 
    }, 
    "10" : { 
     "name" : "Khanh" 
    } 
    } 
} 

Wenn ich das Stichwort „Firebase Meetup“ abfragen, es funktioniert.

let query = ref.child("events").queryOrdered(byChild: "name").queryEqual(toValue: "Firebase Meetup").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

-> Zurück

["fm": { 
    date = "2017-06-16"; 
    "name" : "I love Firebase Meetup in Tokyo yesterday". ; 
}] 

aber wenn ich das Stichwort "Firebase" abfragen, funktioniert es nicht.

Wenn es möglich ist, "Firebase" abzufragen und das Ergebnis wie folgt zu bekommen?

["fm": { 
      date = "2017-06-16"; 
      "name" : "I love Firebase Meetup in Tokyo yesterday". ; 
     }] 
+0

Betrachten Sie 'queryStartingAtValue' und' queryEndingAtValue': https://firebase.google.com/docs/database/ios/lists-of-data#filtering_data –

Antwort

0

können Sie die startat() Funktion:

let query = ref.child("events").queryOrdered(byChild: "name").queryStart(at: "I love Firebase").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

Dokumentation hier https://firebase.google.com/docs/reference/js/firebase.database.Query#startAt

Darüber hinaus, wenn Sie mit Firebase starten wollen oder mit Meetup enden, gerade tun:

let query = ref.child("events").queryOrdered(byChild: "name").queryStart(at: "Firebase").queryEnd(at: "in Tokyo yesterday").queryLimited(toFirst: 1) 
     query.observe(.value, with: { (snapshot) in 
      let content = snapshot.value as? [String : AnyObject] ?? [:] 
      print(content) 

Dokumentation hier https://firebase.google.com/docs/reference/js/firebase.database.Query#startAt

+0

startAt funktioniert, weil "Firebase" am Anfang der Zeichenfolge steht . Was ist, wenn ich "Meetup" abfrage? – John

+0

@John, in deiner Frage, das ist was du fragst, oder vielleicht liege ich falsch? Was versuchst du zu erreichen? –

+0

@John Ich aktualisierte die Antwort, lassen Sie mich wissen, wenn das ist, was Sie erwarten :) –