2016-11-11 1 views
1

auswählen Ich möchte SELECT * FROM products WHERE 'birthday' = true; Aber kann ich das gleiche mit Firebase-Datenbank tun?Android Firebase-Datenbank Abfrage mit der Bedingung

Ich habe

versucht
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
ref. child("products").orderByChild("birthday").equalTo(true).addChildEventListener ........ 

Firebase Database image

Aber es spielt keine Hilfe work.Please. F meine Datenstruktur ist schlecht, bitte beraten Sie auch, wie Sie eine bessere Struktur erstellen.

Antwort

2

Der Screenshot der Datenbank zeigt, dass birthday kein direktes Kind des Produktknotens ist: Es gibt einen zusätzlichen Schritt, for_purpose.

Ihre Abfrage muss das Schema genau verfolgen, damit Ihre Abfrage Code wie folgt aktualisieren:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
ref.child("products") 
    .orderByChild("for_purpose/birthday") 
    .equalTo(true) 
    .addChildEventListener ... 

Beachten Sie, dass für diese effektiv arbeiten zu können, Indizes für jede mögliche for_purpose Kind einrichten müssen in Ihrem Sicherheitsregeln. Oder zumindest für diejenigen, die Sie in Abfragen verwenden. Die Indizes müssen mit Ihrer Abfrage übereinstimmen genau, ein Index auf for_purpose ist nicht genug.

Bei dieser Frage müssen Sie mindestens die folgenden:

{ 
    "rules": { 
    "products": { 
     ".indexOn": [ 
     "for_purpose/birthday", 
     "for_purpose/anniversary", 
     "for_gender/male", 
     ... 
     ] 
    } 
    } 
} 
+0

Hallo vzsg, könnten Sie beraten, wie die Sicherheitsregel setzen? Ist das richtig? { "Regeln": { ".mehr ": "Auth = null", " .WRITE ": "Auth = null", "Produkte": { " .indexOn ": [" for_purpose" , "for_gender"] } } } –

+0

Hallo vzsg, könnten Sie beraten, wie Sie die Sicherheitsregel einstellen? Ist das richtig? { "Regeln": { ".mehr ": "Auth = null", " .WRITE ": "Auth = null", "Produkte": { " .indexOn ": [" for_purpose" , "for_gender"] } } } –

+0

Ich habe die Antwort mit Beispielregeln bearbeitet. – vzsg