2016-08-14 4 views
1

Meine Daten in Firebase sieht wie folgt aus.Firebase equalTo funktioniert nicht

items { 
    item1: { 
     field1: value1 
     field2: value2 
    } 
    item2: { 
     field1: value4 
     field2: value3 
    } 
} 

Jetzt möchte ich alle Einzelteile bekommen, wo field2 === value3. Wenn ich die folgende Abfrage ausführe, erhalte ich alle Elemente. Warum?

firebase.database().ref().child('items') 
     .orderByChild('field2') 
     .equalTo('value3') 
     .limitToLast(10) 
     .once('value'); 
+1

Verwenden Sie die Firebase Version 3 API oder die alte Version 2 API? Der Code sieht nicht richtig aus. Wo ist der Ref? Mit der Version 3 API wäre es so etwas wie 'firebase.database(). Ref(). Child (...' – cartant

+0

Ich benutze die neueste. In dem Code ist Firebase meine lokale Variable, die für Firebase qualifiziert ist .database(). ref() Lassen Sie mich den Code der Frage für bessere Klarheit ändern – user43286

+0

Sie sagen, dass Sie "alle Einzelteile" erhalten. Wie viele Sie erhalten? Können Sie die empfangenen Einzelteile in Ihre Frage einschließen? – cartant

Antwort

0

Statt Abfragen zu verwenden, können Sie child_added Hörer verwenden, die alle Unterpunkte in den Punkten zurück und dann können Sie die Aktionen, die Sie wollen durchführen.

firebase.database().ref('items').on('child_added', snap => { 
    if(snap.val().field2 == 'value3') { 
     console.log('Match found in ' + snap.key); //Match found in item2 
    } 
}); 
Verwandte Themen