2016-07-26 21 views
0

Meine App speichert Meetups in Firebase. Jedes Meetup hat ein Enddatum, das in eine Zeichenfolge konvertiert und in Firebase als Attribut des Meetups gespeichert wurde (siehe Abbildung). Wenn die App die Daten von Firebase abruft, zieht sie alle Meetups in ein Array und filtert die Meetups heraus, wenn das Enddatum in der Vergangenheit liegt. Ich versuche, Firebase abzufragen, wo es nur Meetups mit einem Enddatum gleich oder größer als das aktuelle Datum abruft. Meetups mit Endterminen in der Vergangenheit werden nicht benötigt und werden nie in der App angezeigt. Außerdem wird die Netzwerkbandbreite für das Herunterladen der Meetups erhöht. Hat jemand irgendwelche Lösungen/Vorschläge zum Ausschließen von Meetups von der Abfrage, so dass ich die Meetups auf der Client-Seite nicht herausfiltern muss? enter image description hereDaten von Firebase nach Datum abrufen

+2

Speichern Sie 'startDate' und' endDate' als Unix-Zeitstempel, damit Sie es vergleichen können. – triandicAnt

+0

@ triple.s danke! Ich werde dies versuchen – chickenparm

Antwort

3

Firebase bietet eine Reihe von Abfragen und Funktionen hier zu beschränken:

https://firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_database_query#a5d089e583013c7cdcd653f974e2cba56

Wenn ich mich nicht täusche, sollten Sie in der Lage sein, eine begrenzte Abfrage von meetups

ref.child("meetups").queryOrderedByChild("endDate").queryStartingAtValue(currentDate).queryEndingAtValue(currentDate).observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in 
    //do something  
}) 
wie so zu bauen

Bearbeiten

Sie werden wollen t o Speichern Sie die Felder startDate und endDate als Zeitstempel

+0

Vielen Dank. Ich werde das ausprobieren und die Antwort mit der Funktionsweise aktualisieren. – chickenparm

+0

Können Sie bitte erklären, warum .queryEndingAtValue (currentDate) enthalten ist? – chickenparm

+0

Yup das ist falsch, guter Fang. Alles, was Sie benötigen, ist queryStartingAtValue, da Sie EndDates gleich und größer als das aktuelle Datum möchten. – MFreundlich