oluşturmadan önce Firebase'de verinin olup olmadığını kontrol etme Yeni kullanıcının kullanıcı adını, şifresini ve bir takma adını eklemesi gereken bir kullanıcı giriş formu var (temel firebase auth olarak kullanıcı adı olarak sadece e-postayı kabul eder, değil mi?). Kullanıcı
Bu
ben nickname
anahtar kullanıcı adı dayanmaktadır almaya Firebase oluşturulmuş bir kullanıcıların yapıdır ve 2 çocuk babasıdır: nick ve ident.
Kullanıcıya Firebase'den kimlik doğrulama yöntemlerini kullanarak oluşturmaya başlamadan önce, takma adın zaten mevcut olup olmadığını kontrol etmek için sorgularim. Evet ise, kullanıcı oluşturmaz ve bir uyarı atar. Takma ad mevcut değilse, kullanıcıyı oluşturur ve ardından kullanıcı adının yukarıdaki resimdeki kullanıcı yapısına eklemesini ekler.
Bir süre düşünme ve ben iyi bir fikir createuser kodu almak ve eklemek olduğunu düşündüm (takma zaten var olsaydı kod önce check 'observeSingleEventOfType' atlama ve CREATEUSER infaz edildi) orada burada kodu değiştirmeden nickname sorgusunda doğrudan observeSingleEventOfType içinde 'snapshot.exists()' için 'else' olarak '...
Çalışıyor gibi görünüyor, ancak' doğru 'olup olmadığını bilmiyorum Bunu gerçekleştirmenin yolu ...
Bunu yapmanın başka bir yolu var mı (daha iyi bir yol)?
Yöntem aşağıdadır. Teşekkürler!
func createUser(username: String, password: String, nickname: String){
var userCreated = false
var errorCode = 0
users.queryOrderedByChild("Nickname").queryEqualToValue(nickname).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
if snapshot.exists() {
errorCode = 3
self.delegate?.didReceiveResponseFromFirebaseCreateUser!(userCreated, errorCode: errorCode)
}
else{
self.ref.createUser(username, password: password, withCompletionBlock: { (error) in
if error != nil {
print (error.description)
if error.description.rangeOfString("EMAIL_TAKEN") != nil {
errorCode = 1
}
else if error.description.rangeOfString("INVALID_EMAIL") != nil {
errorCode = 2
}
}
else{
userCreated = true
let newUser = User(username: username, nickname: nickname)
let newUserRef = self.users.childByAppendingPath(username.stringByReplacingOccurrencesOfString(".", withString: "-"))
newUserRef.setValue(newUser.toAnyObject())
}
self.delegate?.didReceiveResponseFromFirebaseCreateUser!(userCreated, errorCode: errorCode)
})
}
})
}
Bu soru için artık gerekli değil, ancak genel olarak: Sorunuzdaki JSON ağacının resminin, metin olarak JSON'a sahip olduğu kadar kullanışlı olmadığını unutmayın. Firebase veritabanınız. JSON'un metne dönüştürülmesini sağlamak, onu gerçek verilerinizle test etmek ve cevabımızda kullanmak için genel olarak kullanmamıza izin verir ve genel olarak yapılması gereken sadece iyi bir şeydir. –