Ios 如何检查Firebase实时数据库中是否已存在childByAutoID()?

Ios 如何检查Firebase实时数据库中是否已存在childByAutoID()?,ios,swift,xcode,firebase,firebase-realtime-database,Ios,Swift,Xcode,Firebase,Firebase Realtime Database,我使用Facebook和Google登录协议登录我的用户。我可以通过以下方式存储这些用户: let firebaseID = Auth.auth().currentUser?.uid let userID = user.userID let fullName = user.profile.name let email = user.profile.email let provider = "Google" guard let authentication

我使用Facebook和Google登录协议登录我的用户。我可以通过以下方式存储这些用户:

 let firebaseID = Auth.auth().currentUser?.uid
    let userID = user.userID
    let fullName = user.profile.name
    let email = user.profile.email
    let provider = "Google"
    guard let authentication = user.authentication else {return}
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, accessToken: authentication.accessToken)
    Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
            if let error = error {
                print("Failed to create Firebase User with Google: ", error)
                return        
            }
            print("Successful creation of Firebase User with Google")
            let databaseRef = Database.database().reference()
            let key = databaseRef.child("node").childByAutoId().key
            let userInfo = ["UID": userID,
                            "Full Name": fullName,
                            "Email": email,
                            "Provider": provider]
            let childUpdates = ["/Users/\(key)/": userInfo]           
    databaseRef.updateChildValues(childUpdates)
每次登录时,即使使用相同的凭据,也会使用相同的登录用户创建一个新用户。如果特定用户以前登录过,如何防止创建新实例

您应该使用:

let childUpdates = ["/Users/\(userID)/": userInfo] 
为了避免出现可选项,您应该这样放置:

let key = databaseRef.child("node").childByAutoId().key ?? ""    
或者如果你想抓住/阻止零,就把它打开

let key = databaseRef.child("node").childByAutoId().key!

但是,由于用户id在同一用户输入新信息时不会更改,并且每次用户输入时您都使用自动键,因此每次都会创建一个新的子项。

您应该在签名和检索数据之后检查用户是否已注册:

Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
    if let error = error {
        return
    }

    if(isNewUser()) {
        // create new user in Firebase
    }
    else {
        // continue and skip creating user ..
    }
}