【发布时间】:2016-07-12 16:22:28
【问题描述】:
我开发了一个小功能,用于检查注册客人输入的用户名是否可用。尽管如此,该函数使用迭代和 if 条件在设备上进行本地检查。我认为当该列表中有成千上万的用户时,这可能会成为未来的性能瓶颈(每次成功创建新用户时都会更新列表)。有没有办法在后端更有效地做到这一点?
这是现在可以使用的功能:
func checkUsernameTaken(completion: (result: NSError) -> Void)
{
let errorFound:NSError = NSError(domain: "", code: 0, userInfo: nil)
dbReference.child("usernamesTaken").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot!) -> Void in
if(snapshot != nil )
{
for rest in snapshot.children.allObjects as! [FIRDataSnapshot] {
if(rest.value as? String == self.usernameTxtField.text!){
self.isUsernameTaken = true
}else{
self.isUsernameTaken = false
}
}
completion(result:errorFound)
}else{
self.isUsernameTaken = false
completion(result:errorFound)
}
})
}
Firebase 中的数据结构是这样的:
如前所述,此列表会不断增加,但目前它只是用于测试目的。
提前致谢
更新:
func usernameValidation(completion: (result: NSError) -> Void)
{
let errorFound:NSError = NSError(domain: "", code: 0, userInfo: nil)
dbReference.child("usernamesTaken").queryEqualToValue(self.usernameTxtField.text!).observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot!) -> Void in
print(snapshot.childrenCount)
})
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database