Вход аутентифицированного пользователя не сохраняется в базе данных - PullRequest
0 голосов
/ 31 августа 2018
@objc func registerButtonClicked()
{

// После настройки Firebase это называется

    guard let email = emailTextField.text else {
        alertBox(title: "Error", message: "All fields are mandatory")
        return }

    guard let password = passwordTextField.text else { return }

    guard let name = nameTextField.text else { return }

    Auth.auth().createUser(withEmail: email, password: password) { (data, error) in
        if error != nil{
            print(error.debugDescription)
            print("Error occurred")
        } else
        {
            print("Data -- >\(String(describing: data))")
            self.saveDataInFirebase(name: name, password: password, email: email)

// здесь данные сохраняются в таблице аутентификации в базе данных firebase, поэтому следующим шагом // было сохранение их данных в db в формате json

        }
    }
}
func saveDataInFirebase(name: String, password: String, email: String)
{

    let userData = ["name" : name, "email" : email]
    print("name \(name) --- Email \(email)")

// распечатать детали для сохранения в БД

    let firebaseRef = Database.database().reference(fromURL: "https://chatdemo1-d3423.firebaseio.com/")
    firebaseRef.updateChildValues(userData) { (error, dbRef) in
        if error != nil{
            print("------------------")
            print(error.debugDescription)
            print("----------------------")
        }
        else
        {
            print("Data Saved Successfully")
        }
    }
}

1 Ответ

0 голосов
/ 31 августа 2018

Код в вопросе, вероятно, не тот, который вы хотите использовать, так как он будет перезаписывать всю вашу Firebase при каждом запуске.

Причина в том, что вы не записываете данные в дочерний узел вашей Firbase, вы записываете их в основной узел. Вот что пишется:

your_firebase //<- this is where you're writing too each time
   email: "some email"
   name:  "some name"

Полагаю, вы хотите структурировать это так

your_firebase
    user_id
      email: "some email"
      name:  "some name"

и код для этого будет

var ref: DatabaseReference!

func viewDidLoad() {
    self.ref = Database.database().reference()
    .
    .
    .     
}

func createUser() {
    let email = "some email"
    let password = "some password"
    let name = "some name"
    Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
        if let x = error { //some fancy error checking
            let err = x as NSError
            switch err.code {
            case AuthErrorCode.emailAlreadyInUse.rawValue:
                print("email in use!")
            default:
                print("unknown error")
            }
        } else {
            guard let user = authResult?.user else { return }
            let uid = user.uid
            let usersRef = self.ref.child("users")
            let thisUserRef = usersRef.child(uid)
            thisUserRef.child("email").setValue(email)
            thisUserRef.child("name").setValue(name)
        }
    }
}

В этом коде предполагается, что правила Firebase позволяют пользователю разрешать запись узла пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...