ссылка на идентификатор документа - PullRequest
0 голосов
/ 18 июня 2020
    @IBAction func NextButtonTapped(_ sender: Any) {

    //validate the fileds
    let Error = validateFields()

    if Error != nil {

    // there is somthing wrong with the fields show error message
            showError(Error!)

        }
    else {

    // create cleaned versions of the data
    let Password = PasswordTextField.text!.trimmingCharacters(in: 
    .whitespacesAndNewlines)
    let Email = EmailTextField.text!.trimmingCharacters(in: 
    .whitespacesAndNewlines)
    let Firstname = FirstnameTextField.text!.trimmingCharacters(in: 
    .whitespacesAndNewlines)
    let Lastname = LastnameTextField.text!.trimmingCharacters(in: 
    .whitespacesAndNewlines)
    let Age = AgeTextField.text!.trimmingCharacters(in: 
    .whitespacesAndNewlines)


    // create the user
    Auth.auth().createUser(withEmail: Email, password: Password) { 
    (results, Err) in

    // check for errors
    if Err != nil {
    // there was an error creating the user

    self.showError("Error creating user")


    }

    else {

    // user was created succesfully store user info
    let db = Firestore.firestore()



    db.collection("users").document(results!.user.uid).setData(["first 
    name":Firstname, "last name":Lastname, "age":Age, 
    "uid":results!.user.uid]) { (Error) in


    if Error != nil {
    // show error message
    self.showError("error saving user data")

    }
    }


    //transition to the home screen
    self.transitionToHome()

                }

            }

        }

    }


Итак, в основном здесь я аутентифицирую пользователя на firebase. (Я сделал идентификатор документа = идентификатором пользователя), затем я ввожу информацию о пользователях в базу данных firebase в документ, где его идентификатор также равен идентификатору пользователя, когда они прошли аутентификацию. Теперь я пытаюсь создать или получить ссылку на идентификатор документа, где некоторая информация о пользователях уже хранится, например, имя, фамилия, возраст ... поэтому я могу позже добавить / объединить дополнительную информацию в тот же документ имя, фамилия и возраст хранятся под. Вот как я пытаюсь объединить информацию в другом контроллере представления.


    db.collection("users").document(*******).setData(["middle 
    Name":Middlename, "favourite colour":Favouritecolour], merge: true) 
    { (Error) in

    if Error != nil {
    // show error messgae
    self.showError("error saving user data")
        }
     }


Где я поставил «*******», я должен ссылаться на идентификатор документа, чтобы я мог объединить / добавить эту информацию в тот же документ, что и информация о других пользователях, где хранятся имя, фамилия и возраст.
Код, который я вам показал и спросил ранее о том, как получить идентификатор документа, был кодом, который я нашел при переполнении стека, где у них была такая же проблема, как у меня. Он пытался получить доступ к чему-то из своего документа, но я просто пытаюсь создать ссылку на идентификатор документа.
Кодовая форма ранее:


    func getDocument() {

    //get specific document from current user
    let docRef =  
  Firestore.firestore().collection("users").document(Auth.auth().currentUs er?.uid ?? "")

    //get data
    docRef.getDocument { (document, Error) in
    if let document = document, document.exists {
    let dataDescription = document.data()
    print(dataDescription?["uid"]) 
    } else {
    print("Document does not exist") 

            }

        }

    }

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

Большое спасибо !!!

1 Ответ

0 голосов
/ 18 июня 2020

Чтобы распечатать идентификатор документа, сделайте что-то вроде этого:

let docRef = Firestore.firestore().collection("users").document(Auth.auth().currentUser?.uid ?? "")

// Get data
docRef.getDocument { (document, error) in
    if let document = document, document.exists {
        let dataDescription = document.data()
        print(dataDescription?["firstname"])
        print(document.documentID)
    } else {
        print("Document does not exist")
    }
}

Я настоятельно рекомендую потратить некоторое время на документацию Firestore , так как это описано там в разделе получение несколько документов из коллекции

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