2017-02-13 3 views
0

Ich versuche, eine verschachtelte Abfrage für eine meiner Tabellen durchzuführen, aber es endet die Rückgabe aller Werte in der Tabelle, wo date ist größer statt alle Werte in der Tabelle, wo userId = userId und date ist größerFirebase mehrere Abfrage funktioniert nicht

DatabaseReference tableAttendObject = getDatabaseTableWith(Constants.tableAttendObject); 
Query query = tableAttendObject.orderByChild(Constants.AttendObjectUserUUID).equalTo(userId); 
query = query.getRef().orderByChild(Constants.AttendObjectEventDate).startAt(date); 

query.addValueEventListener(new ValueEventListener() { 
//return logic 

in der Tabelle Meine Datenmodell ist wie folgt:

->id->userId 
    ->date 
+1

Sie können nur eine einzige Eigenschaft in Firebase Queries bestellen/filtern. @ uguboz Antwort zeigen eine Lösung, die funktionieren kann, aber auch http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

Antwort

2

Wenn Sie bereits Benutzer-ID, warum Sie eine Abfrage machen ?? Tun Sie dies einfach

Query query = tableAttendObject.child(userId) 
.orderByChild(Constants.AttendObjectEventDate) 
.startAt(date).addValueEventListener(new ValueEventListener() { 
.... 
+0

dies funktioniert nur in dem Fall die ID = userId' und ich muss nur ein Objekt abrufen ... in meinem Fall ist 'id' eine andere ID und kann mehrere Instanzen davon haben – John

+0

Aha ok. Ändern Sie dann Ihr Datenbankschema. Entfernen Sie die Benutzer-ID aus den Bestellungen. Fügen Sie dem Knoten des Benutzers Bestell-IDs hinzu, beispielsweise für Benutzer 1: {order1id: true; order2id: true usw.} Auf diese Weise können Sie feststellen, dass die Bestellungen zu jedem Benutzer gehören – uguboz