引用文档ID

时间:2020-06-18 02:28:34

标签: swift firebase google-cloud-firestore

    @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上对用户进行身份验证。 (我做了 文档ID =用户ID),然后输入用户信息 到firebase数据库中进入一个ID也为 等于用户身份验证后的用户ID。现在我 我想做的是创建或获取对文档ID的引用 已经存储了一些用户信息,例如姓名,姓氏, 年龄...这样我以后可以在同一文档中添加/合并更多信息 名称,姓氏和年龄存储在下面。我就是这样 将信息合并到不同的视图控制器中


    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")
        }
     }


我放在“ *******”的地方应该是 文档ID,因此我可以将此信息合并/添加到与该文档相同的文档中 其他用户的名称,姓氏和年龄所在的信息 已存储。
我向您展示的代码,以及之前询问的有关如何获取 文档ID,来自我在堆栈溢出的地方找到的代码, 有和我类似的问题。他正在尝试访问某些内容 他的文件,但我只是想创建一个参考 文档ID。
先前的代码形式:


    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") 

            }

        }

    }

但是我不知道这段代码是否对我有帮助,我只是想可能 因为它也正在访问文档,所以这就是为什么 是我获取文档ID的答案。
所以基本上我的问题是,添加它后我需要做什么 我在本网站上找到的代码,或者如果我必须编写自己的代码, 这样我就可以获得对文档ID的引用,其中我的名字,姓氏 并且存储了Age,因此我可以将更多信息合并到该文档中

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

要打印文档ID,请执行以下操作:

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 documentation中,因为getting multiple documents from a collection下的内容对此有所说明