почему я получаю два идентификатора пользователя при создании пользователя в firebase с помощью swift? - PullRequest
0 голосов
/ 29 мая 2020

, когда я регистрирую пользователя в своем приложении ios, он генерирует идентификатор пользователя и добавляет его в базу данных с именем, фамилией и именем пользователя, но генерирует идентификатор пользователя и другое случайное число / идентификатор и я не знаю, для чего это:

enter image description here

Я не знаю, что такое Рой ... и не знаю, откуда он. поэтому, когда я пытаюсь получить доступ к uid пользователя для доступа к информации, такой как имя и фамилия, я продолжаю получать следующую ошибку, потому что он использует номер wc7 ..., а не другой:

Listener at / Users / wc7VyejKlDNfcAhFu3AkIX9Y9on1 / Ошибка имени пользователя: permission_denied

это мой код, который я использую для доступа к информации о пользователях:

func fetchUsersData() {

    guard let currentUser = Auth.auth().currentUser?.uid else { return }
    print("Current user id is \(currentUser)")


    Database.database().reference().child("Users").child(currentUser).child(USER_NAME).observeSingleEvent(of: .value) { (snapshot) in
        guard let username = snapshot.value as? String else {return}
        self.navigationItem.title = username
    }
}

как это исправить?

1 Ответ

1 голос
/ 29 мая 2020

Этот код предназначен для базы данных Firebase Real Time, а снимок экрана - для Cloud Firestore. Они совершенно разные и никак не связаны.

Если вы хотите прочитать данные, показанные на скриншоте, вам необходимо использовать документацию Cloud Firestore .

DocumentID 'Roy ...' появляется, когда вы не Не назначайте документу идентификатор ... он сгенерирует его автоматически.

Кроме того, измените структуру Firestore, чтобы использовать uid пользователя в качестве идентификатора документа. Таким образом, это будет выглядеть так:

users //the collection
   uid_0 //the document with documentID = a users uid
      first_name: "Hank"
      last_name: "Jones"
      user_name: "Hankster"
   uid_1
      first_name: "Leroy"
      last_name: "Jenkins"
      user_name: "Leeeerrroooyyy"

, а затем код для чтения определенного c имени пользователя на основе uid:

func readUserName() {
    let users = self.db.collection("users")
    let thisUser = users.document(the users uid)
    thisUser.getDocument(completion: { documentSnapshot, error in
        if let error = error {
            print(error.localizedDescription)
            return
        }

        guard let snap = documentSnapshot else { return }
        let docId = snap.documentID
        let userName = snap.get("user_name") as? String ?? "No Name"
        print(userName)
    })
}

Также обратите внимание, что вам нужно будет пройти аутентификацию в Firestore для чтения любых данных или , чтобы изменить правила безопасности, чтобы разрешить чтение любому. Обычно это не очень хорошая идея, но когда вы только начинаете, все в порядке.

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