2017-03-24 5 views
0

Ich versuche Firebase-Datenbank und eine Frage kommt auf.Abfrage zwischen zwei Eigenschaften Firebase Database - Android

vor der Veröffentlichung, las ich this, this und this github aber nicht verstehen, wie diese auf Android zu tun (wenn es eine Möglichkeit ist das auf js zu tun, warum nicht Java?)

ich eine Notiz mit einem habe GUID auf dem Schlüssel, und ich habe zwei Timestamps Eigenschaften, StartTime und EndTime. Ich bekomme den tatsächlichen Zeitstempel vom Benutzer, und ich muss alle Notizen abrufen, wo der Benutzer Zeitstempel zwischen StartTime und EndTime ist.

Hier ist eine Einheit, Probe auf Firebase:

Hinweise:

{ 
    "notes": { 
    "aedbd23a-ca8e-4160-88a0-1d68f92b34cf": { 
     "description": "Note test", 
     "startTime": 1490353200, 
     "endTime": 1490396400 
    } 
    } 
} 

Auf Ebene SQL kann ich dies tun, wählen Sie erreichen * von Notizen, wo Usertime zwischen Startzeit und endTime. Wie kann ich dies auf der Basis erreichen?

Antwort

1

können Sie verwenden Query

endAt(String value): eine Abfrage nur Knoten zurückgeben Kind mit einem Wert von weniger eingeschränkt erstellen als oder gleich dem angegebenen Wert, die gegebene orderBy Richtlinie oder Priorität als Standard verwendet wird.

startAt(String value): eine Abfrage nur mit einem Wert Knoten Kind größer oder gleich den angegebenen Wert, mit der gegebenen orderBy Richtlinie oder Priorität als Standard zurückzukehren gezwungen erstellen.

+0

Ich verwende bereits diese Methoden, aber der Punkt hier ist, wie kann ich zwischen zwei Eigenschaften abfragen. Wenn ich zum Beispiel nach endTime bestelle, kann ich keinen anoter key bestellen und ihn filtern (löst eine Ausnahme aus). Und Abfrage benötigt einen zu filternden Wert. Wenn man versucht, besser zu veranschaulichen, ist die Abfrage in SQL (1490353200> = startTime) und (1490353200 <= endTime) –

0
{ 
"notes": { 
    "aedbd23a-ca8e-4160-88a0-1d68f92b34cf": { 
    "description": "Note test", 
    "startTime": 1490353200, 
    "endTime": 1490396400, 
    "startTime_endTime": 1490353200_1490396400 
    } 
    } 
} 

Abfrage wird

ref.child("notes") 
.orderByChild("startTime_endTime") 
.startAt("1490353200_1490353200") 
.endAt("1490353250_1490353250") 

In Feuerbasis Gebrauch sein die zusammengesetzten Schlüssel, wenn Sie mehrere Filter benötigen.
Versuchen Sie dieses und sagen Sie mir, ob es funktioniert oder nicht. Im Anfang geben Sie einen kleinen Wert und geben einen größeren Wert.

Verwandte Themen