私はguestを登録して入力したユーザ名が利用可能かどうかを調べる小さな関数を開発しました。それにもかかわらず、この関数はiterationとif条件を使用してデバイス上でこれをローカルでチェックします。私は、リストに何千人ものユーザーがいるとき(これは新しいユーザーが正常に作成されるたびにリストが更新される)、将来的にパフォーマンスのボトルネックになる可能性があると考えています。バックエンド側でこれをより効率的に行う方法はありますか?ここでFirebase - 効率的にユーザ名を確認してください
が動作するようになりました関数である。
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)
})
}
私のキーが常に変更されているため(UIDであるため)、上記の使用方法がわかりません。あなたの意見を説明するのに役立つ例がありますか? –
私はコードを使って上記の投稿を更新していますが、まだ幸運はありません... –
申し訳ありませんがSwiftを使用していないので、コードをデバッグできません。しかし、それは関連する機能です。 –