2015-10-11 2 views
6

Ich bin neu in ember.js und Firebase. Ich habe versucht, etwas zu machen, das mich braucht, um die Datenbank nach einem Schlüssel abzufragen, der einem definierten Wert entspricht.Wie verwende ich emberfire um eine firebase db für alle Elemente mit dem Namen equalTo xyz in ember.js 2.0.0 abzufragen?

Nach guides.emberjs.com soll das folgende Beispiel funktionieren:

this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) { 
    // Do something with `peters` 
}); 

Aber es funktioniert nicht. Anscheinend, weil ich das emberfire-Addon verwende. Nach buchstäblich Stunden Googeln gab es keine klare Lösung.

Die emberfire docs sprechen über die verfügbaren Argumente.

Argumente

orderBy-String - Das Anwesen ...
.
.
.

EqualTo-String, Anzahl, Null - Erstellt eine Abfrage, die Kinder, die mit dem angegebenen Wert enthält.

Und ein Beispiel präsentieren ... Obwohl

// app/routes/dinosaurs.js 
export default Ember.Route.extend({ 
    model: function() { 
    return this.store.find('dinosaur', { 
     orderBy: 'height', 
     limitToLast: 10, 
     startAt: 5 
    }); 
    } 
}); 

ohne das zeigt, wie 'EqualTo' zu verwenden. Ich habe alle getestet, aber ich konnte nicht verstehen, wie equalTo funktioniert.

Es gibt andere Lösungen zu SO, aber sie sind alle vor Version 2.0.0. Ich denke also nicht, dass sie nach der Version 2.0.0 funktionieren würden.

Ember.js Debug-Informationen:

DEBUG: ------------------------------- 
DEBUG: Ember  : 2.0.0 
DEBUG: Ember Data : 2.0.0 
DEBUG: Firebase : 2.3.1 
DEBUG: EmberFire : 1.6.0 
DEBUG: jQuery  : 1.11.3 
DEBUG: ------------------------------- 

Die Datenbank im Einsatz: https://shoutoutdb.firebaseio.com/users

Ich verstehe nicht ganz, wie EqualTo soll hier arbeiten, aber ich bin keine Ahnung, entweder zu bekommen. Hoffentlich wird hier jemand bereit sein zu helfen.

Wenn Sie denken, dass die Frage irgendeine Verbesserung braucht, bitte fragen Sie. Ich habe es so genau beschrieben, wie ich es mir gedacht habe.
Vielen Dank im Voraus. :)

EDIT: -Code Ich habe versucht, zu verwenden:

$E.store.find('user',{name:'Alpha'}).then(
    function (data) { 
     //stuff done with the data 
    } 
); 

ich auch mehrere verschiedene Versionen, um dieses Code versucht. Nichts hat funktioniert, also denke ich nicht, dass es hier sogar erwähnenswert ist.

+0

Da die Menschen diese nach unten stimmen, können sie mir wenigstens sagen, warum? –

+0

Welchen Fehler sehen Sie? – vikram7

+1

@ vikram7 Ich bekomme keinen Fehler. Ich bekomme alles! In dem Code, den ich gerade am Ende der Frage eingefügt habe, weiß ich nicht, ob es funktionieren sollte, aber es gibt mir nicht, was ich will. Ich frage nicht ein "Ich bekomme einen Fehler, kann nicht aufgelöst werden." Frage, ich frage ein "Ich will das 'tun, und ich habe alles versucht, was ich denken konnte, nichts funktioniert." Frage. –

Antwort

14

Mit Hilfe der Abfragefunktionen können Sie kombinieren orderByChild und equalTo das gewünschte Ergebnis zu erhalten:

ref.child('people').orderByChild('name').equalTo('Peter').on('value', ...); 

Es gibt ein Beispiel in den web API reference for equalTo und im Web Guide auf complex queries.

Also, in EmberFire, würde dies auf die folgende übersetzen:

this.store.query('person', { orderBy: 'name', equalTo: 'Peter' }); 
+0

Hey @tstirrat, das funktioniert !! danke .. Ich muss nach mehr als einer Eigenschaft filtern wie 'name: 'Peter', Alter: 20', wie geht das? Vielen Dank. –

+0

Hey Joe. Sehen Sie sich die Antwort an, wie Sie das machen können. Es ist im Add-on enthalten. – Tom

Verwandte Themen