2014-11-25 7 views
5

Ich möchte Suche per E-Mail in meiner App implementieren, aber irgendwie mit dem Design der Abfrage fest. meine Datenstruktur sieht wie folgt auserhalten Benutzer-E-Mail von Firebase mit Abfrage

users { 
     uid { 
      email: [email protected] 

i die folgende Abfrage versucht:

console.log(reqestEmail); // proper email here 
new Firebase(USERS) 
    .startAt(reqestEmail) 
    .endAt(reqestEmail) 
    .once('value', function(snap){ 
    var foundUser = snap.val(); 

    console.log(foundUser) // output is null 
    }); 

Ich denke, das Problem in der Tatsache ist, ich eine uid im Pfad haben. Aber wie kann man die Suche mit dieser Datenstruktur implementieren - wenn diese UID das benötigte Ergebnis ist?

Wenn es wichtig ist Firebase 2.0.2 verwenden und AngularFire 0,9

Sorry, Jungs: Noob hier. Auch in Gefahr der Kontoaussetzung.

+0

Als erstes müssen Sie 'orderByChild' anrufen und dann' startAt' und 'endAt'. Siehe https://www.firebase.com/docs/web/api/query/orderbychild.html –

+0

Aber welches Argument sollte ich übergeben, wenn meine UID unbekannt ist (es ist die, die ich suche)? Mache ich es richtig mit dieser Datenstruktur? – walkthroughthecode

Antwort

7

Sie haben per E-Mail-Adresse in erster Ordnung, so dass man dann auf sie filtern:

console.log(reqestEmail); // proper email here 
new Firebase(USERS) 
    .orderByChild('email') 
    .startAt(reqestEmail) 
    .endAt(reqestEmail) 
    .once('value', function(snap){ 
    var foundUser = snap.val(); 
    console.log(foundUser) // output is correct now 
    }); 

Arbeitsbeispiel in diesem jsbin: http://jsbin.com/fenavu/2/edit?js,console

+1

Vielen Dank, das ist richtig. Nicht ganz offensichtlich aus der Dokumentation, wenn Sie mich fragen. – walkthroughthecode

+2

Es wäre konstruktiver, wenn Sie sagen würden, welche Dokumentation Sie gelesen haben und wie diese Seite verbessert werden könnte, so dass es offensichtlich gewesen wäre, dies zu erreichen. –

+1

Es tut mir leid. Wenn jemand von Firebase dies liest, IMO dieser Blogpost auf Ihrer Website ist verwirrend. https://www.firebase.com/blog/2013-10-01-queries-part-one.html Vor allem der Teil «Finden Sie einen Benutzer per E-Mail-Adresse (WHERE email = x)». Die Sache, die ich OrderByChild aufrufen muss, wird nicht angegeben. Es wäre schön, eine ähnliche Situation wie bei mir mit unbekanntem Schlüssel zu erwähnen. – walkthroughthecode