首页 > 解决方案 > Firebase Swift:如何使用“用户”集合下的 UID 创建新集合?

问题描述

我正在使用 Firebase Auth & Cloud Database 创建一个新的 IOS 应用程序。添加新用户时,会创建一个“个人资料”集合,其中包含他们的初始注册输入。我需要弄清楚如何在使用 UID 作为其文档 ID 的“用户”集合下创建一个新集合。

到目前为止,这是我为这一位编写的代码,但我不断收到此消息"Value of type 'CollectionReference' has no member 'child'"。我按照 Firebase 的说明进行操作,但一直出错。

我错过了什么?

        // Create the user
        Auth.auth().createUser(withEmail: email, password: password) { (result, err) in

            // Check for errors
            if err != nil {

                // There was an error
                self.showError("Error creating the user")
            }
            else {
                // User was created successfully, now store the first name and last name
                let db = Firestore.firestore()

                let uid = result!.user.uid


                //creates profile doc under uid with all the info
                db.collection("users").child(uid).addDocument("profile").setData([ "firstname":firstName, "lastname":lastName, "uid":uid, "companyname":companyName, "companyalias":companyAlias, "trucknumber":truckNumber, "trucktype":truckType]) { (error) in

                //db.collection("users").addDocument(data: ["firstname":firstName, "lastname":lastName, "uid":result!.user.uid ]) { (error) in

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

                //Transition to home
                self.transitionToHome()
            }
        }
    }
}

我担心在创建新用户时我可能应该在开始时创建其他集合。我需要每个用户都有一个保存在 UID 下的“个人资料”、“朋友列表”和“我的工作”集合。

我是否应该在开始时担心是否要创建所有必需的集合?

标签: iosswiftfirebasegoogle-cloud-firestorefirebase-authentication

解决方案


正如弗兰克·范·普菲伦所说。您可以简单地将用户数据用作您的配置文件数据,然后根据需要添加子集合。创建用户时无需创建子集合。在我的示例中,仅当用户使用应用程序的其他功能时才会创建子集合。我会添加用户个人资料所需的所有不同字段,并让用户稍后修改它们,但这只是我的偏好。 在此处输入图像描述


推荐阅读