2017-01-22 12 views
2

Ich möchte eine Anwendung erstellen, die jeder Benutzer eine Anzeige (Ankündigung) mit etwas hinzufügen kann, die er verkaufen möchte. Dies ist die Struktur der Echtzeit-Datenbank in Firebase:Filter Realtime Database Android

- advert 
    - category 
     - {uid} 
      - title 
      - price 
      - description 
      - location 

Ich möchte den Benutzer lassen, die Anzeigen nach Kategorie, Titel zu filtern und Preis.

Derzeit kann ich die Anzeigen filtern, um nur durch Titel wie folgt aus:

FirebaseDatabase.getInstance().getReference() 
        .child("adverts") 
        .orderByChild("title") 
        .startAt("tv") 
        .limitToFirst(20) 

Ich habe 3 Fragen:

  1. Wie kann ich mehr "und Klauseln" hinzufügen? Oder wie sollte ich die Knoten strukturieren, um mehr Werte zu filtern?
  2. Wie sortiere ich die Werte, die ich vom Server erhalte, in aufsteigender Reihenfolge oder in absteigender Reihenfolge abhängig von der UID?
  3. Scheint, dass die Methode startAt ("abc") nicht nur die Kinder abholt, die im Titel "tv" enthalten sind. Mache ich etwas falsch? Wie soll ich nur die Kinder holen, die die Zeichenfolge "tv" enthalten?

Antwort

1
  1. Auf Feuerbasis, gibt es keine Möglichkeit zu addieren "AND-Klauseln". Sie müssen Ihre Daten so strukturieren, dass sie Ihren Filteranforderungen entsprechen.

  2. Ich glaube, Firebase sortiert die Daten bereits nach uid.

  3. Wenn Sie nur die Kinder holen wollen, die die Zeichenfolge „tv“ enthält, sollten Sie diese Abfrage verwenden:

    FirebaseDatabase.getInstance().getReference().child("adverts").orderByChild("title").startAt("tv").endAt("tv").limitToFirst(20);

Ich schlage vor, dass Sie die Firebase Database for SQL Developers Series beobachten. Es hat die Antworten für die 3 Ihrer Fragen

+0

Vielen Dank für Ihre Antwort! Und danke für die Videos. Ich wusste nichts über die Videos. 1. Wie könnte ich Daten in meinem Fall strukturieren? 2. Firebase sortiert die Daten bereits nach uid, aber was geschieht, wenn die Daten manchmal in aufsteigender Reihenfolge und manchmal in absteigender Reihenfolge sortiert werden sollen. Wie soll ich das ändern? – Andrew

+0

Ich habe gerade die Videos angeschaut und es scheint, dass Sie nicht mehr "AND CLAUSES" hinzufügen können und Sie können nicht die Kinder holen, die STRING enthalten. Firebase hat mich enttäuscht! – Andrew

+0

Ja, es bietet nur einfache Möglichkeiten zum Abfragen und Sortieren von Daten. Wenn Sie mehr tun möchten, sind Sie allein. Ich hoffe, dass Google dies eines Tages verbessert. –

Verwandte Themen