Как я могу использовать пользовательский ввод для имени ребенка в Firebase? - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь создать простую пользовательскую базу данных на Firebase для iOS. У меня есть два текстовых поля, одно из которых принимает адрес электронной почты пользователя, а другое - пароль пользователя. Я хочу, чтобы электронная почта была идентификатором пользователя. Я пытаюсь сделать это, создав переменную «email», которую я установил равной emailTextField.text! Затем я реализую код, который генерирует дочерние элементы в Firebase, например:

ref = Database.database().reference()

ref.child("users").child(email).setValue(true)

Вот моя проблема: создание дочернего элемента и присвоение ему имени с помощью переменной не работает. Я могу сделать следующее очень хорошо:

ref.child("users").child("email")

но как только я уберу кавычки вокруг "email", чтобы он стал переменной, программа вылетает. Как я могу использовать пользовательский ввод для имени ребенка в Firebase?

1 Ответ

0 голосов
/ 07 мая 2018

Имена узлов / документов Firebase не поддерживают тот же набор символов, который поддерживают адреса электронной почты, например,. Символ в адресе электронной почты сделает имя ребенка недействительным.

Если вы пытались установить ребенка как ref.child("users").child("xyz@xyz.xyz") вы должны увидеть ту же ошибку.

Если вам абсолютно необходимо использовать адрес электронной почты в качестве имени узла, я рекомендую кодировать электронную почту способом, совместимым с правилами имен узлов firebase.

Ссылка на правила

Редактировать: Если вы используете firebase auth, то в обычном шаблоне также используется UID, возвращенный аутентифицированным пользовательским объектом в качестве имени узла, а не адрес электронной почты, введенный из текстового поля.

Быстрый пример:

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
  if let user = user {
        ref.child("users").child(user.uid).setValue(true)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...