我正在swift 4.0中创建一个iPhone应用程序。我正在连接到目前正在运行的Firestore。我遇到的问题是每次用户通过身份验证时都会创建一个随机字符文档。我想更改此名称,以便电子邮件地址是数据库中的注册文档,因此下次使用相同的凭据登录时,它会使用相同的文档。
let databaseRef = Database.database().reference(fromURL: “*****************”)
let storage = Storage.storage().reference()
let db = Firestore.firestore()
var ref: DocumentReference? = nil
var handle: AuthStateDidChangeListenerHandle?
var checkBtnTitle:Bool = true
override func viewDidLoad() {
super.viewDidLoad()
if Auth.auth().currentUser != nil {
let currentUser = Auth.auth().currentUser
btnLogOut.title = "LogOut"
btnLogin.title = "Login"
var ref: DocumentReference? = nil
ref = db.collection("Solicitor").addDocument(data: [
"userID": currentUser?.email! as Any,
"Name": currentUser?.displayName as Any
]) { err in
if let err = err {
print("Error adding document: \(err)")
} else {
print("Document added with ID: \(ref!.documentID)")
}
}
} else {
btnLogOut.title = "Login"
btnLogin.title = ""
}
// google signin
GIDSignIn.sharedInstance()?.uiDelegate = self
当您调用addDocument()
时,Firestore会创建一个包含自动生成ID的新文档。如果要控制文档的ID,则应使用document()
和setData()
方法。例如:
ref = db.collection("Solicitor").document(currentUser?.email!).setDate(data: [
"userID": currentUser?.email! as Any,
"Name": currentUser?.displayName as Any
])
有关更多信息,请参阅Firebase documentation on adding documents。
感谢您对此的帮助。我终于得到了保存...我不需要DB中的'ref ='部分。
let currentUser = Auth.auth().currentUser
let businessEmail = Auth.auth().currentUser?.email!
db.collection("Solicitor").document(businessEmail!).setData([
另外,我还会获得自动生成的ID以及用户的文档ID(电子邮件地址)。有没有人对如何阻止这种行为有任何建议?