2017-12-20 4 views
0

Ich bin gerade dabei, eine Funktion zu codieren, die die Benutzerdaten übergeben, wenn ein Benutzer existiert. Wenn der Benutzername in der Datenbank ist, ist der Code in Ordnung, aber wenn kein Benutzername in der Datenbank gespeichert ist, weiß ich nicht, wie ich eine Rückgabe-Funktion haben soll.Überprüfen Sie, ob Benutzer existiert mit Benutzername mit Swift und Firebase

ich Anfänger bin, das ist, was ich getan habe:

func observeUserByUsername(username: String, completion: @escaping (Userm?) -> Void) { 
     REF_USERS.queryOrdered(byChild: "username_lowercase").queryEqual(toValue: username).observeSingleEvent(of: .childAdded) { (snapshot) in 

     if let dict = snapshot.value as? [String: Any] { 
      let user = Userm.transformUser(dict: dict, key: snapshot.key) 
      completion(user) 
     } else { 
      print("no user") 
      completion(nil) 
     } 
     } 
} 

Ich möchte so etwas haben: wenn Benutzer mit diesem Benutzernamen ist -> zurück nil (für den Abschluss).

Wissen Sie, wie ich das machen könnte?

Antwort

0

Also wenn ich es richtig gemacht habe, möchten Sie nur überprüfen, ob ein Benutzer mit dem Benutzernamen existiert. Sie können einfach den Pfad zu Firebase eingeben und die exists() -Methode verwenden, um zu überprüfen, ob dieser Unterknoten existiert. Ich habe eine ähnliche Methode, Sie können sie vielleicht ändern, um in Ihr Projekt zu passen.

func checkUsernameAvailability(completion: @escaping (_ available:Bool)->()){ 
    guard let lowercasedText = usernameTextField.text?.lowercased() else {completion(false); return} 
    let ref = Database.database().reference().child("users").child("username").child(lowercasedText) 
    ref.observeSingleEvent(of: .value) { (snapshot) in 
     if snapshot.exists(){ 
      completion(false) 
      return 
     }else{ 
      completion(true) 
     } 
    } 
} 

Seien Sie vorsichtig, Firebase ist nicht case-sensitive (das ist, warum ich immer überprüfen und speichern auch die Kleinbuchstaben-Version). Wenn Ihr Unterknoten z.B. Ist 'Benutzername' und Sie suchen nach dem Namen 'Benutzername', wird es Ihnen sagen, dass es bereits einen mit diesem Namen gibt.

Verwandte Themen