2016-06-02 6 views
3

Ich habe eine Abfrage, die nach einem Benutzer basierend auf Benutzer-ID sucht.Firebase snapshot.key gibt den tatsächlichen Schlüssel nicht zurück?

usersRef.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in 
    if snapshot.exists() { 
     print("user exists") 
     print(snapshot.key) 

Die Abfrage gibt den richtigen Benutzer, aber die Linie print(snapshot.key) wahrsten Sinne des Wortes gibt die Wort „Benutzer“, und nicht um eine tatsächliche Benutzer-ID. print(snapshot) gibt die folgenden Benutzer:

Snap (users) { 
    DELyncz9ZmTtBIKfbNYXtbhUADD2 =  { 
     email = "[email protected]"; 
     "first_name" = test; 
     "last_name" = test; 
    }; 

Wie kann ich DELyncz9ZmTtBIKfbNYXtbhUADD2 bekommen? Ich kann die E-Mail mit let email = child.value["email"] bekommen, aber ich kann den Schlüssel nicht bekommen, weil es kein benanntes Attribut ist.

Danke !!

BEARBEITEN: Aktualisierter Code dank Franks Antwort. ambiguous use of key

query.observeEventType(.Value, withBlock: { snapshot in 
      print(snapshot.key) 

      if snapshot.exists() { 
       print("user exists") 

       for child in snapshot.children { 
        print(child.key) 

Antwort

4
bekommen

Wenn Sie eine Abfrage an einem Ort ausgeführt werden, wird das Ergebnis eine Liste der passenden Kinder. Selbst wenn es nur ein einziges passendes Objekt gibt, wird das Ergebnis eine Liste von einem Kind sein.

Sie drucken den Schlüssel aller resultierenden Kinder. Da es kein einzelnes Ergebnis gibt, gibt das SDK den Schlüssel der Position/Sammlung aus, die Sie abgefragt haben: users.

Was sind Sie wahrscheinlich suchen, ist eine Schleife über die passenden Kinder und ihre Schlüssel drucken:

let query = usersRef.queryOrderedByChild("email").queryEqualToValue(email) 
query.observeEventType(.Value, withBlock: { snapshot in 
    for child in snapshot.children { 
     print(child.key) 
    } 
}) 
+0

figured it out! Musste nur 'let key = child.key as String' machen. Danke noch einmal!! – winston

Verwandte Themen