私はFirebaseのサインアップのための1つの中央VCとは対照的に、5つのView Controllerのサインアップフローを取り入れました。FirebaseとSwift 3でサインアップする前にユーザー名が存在するかどうかを検証するにはどうすればよいですか?
通常、サインアップする前にデータが失われてしまう問題がありますが、入力したすべての値をsegue経由でプログラムによって最終確認ページにプッシュし、最終的に正式な認証のためにFirebaseに送信します。
私の問題はそこにあります - ユーザ名が存在するかどうか確認したいですの前ににサインアップしてください。これは私のアプリのUXにとって不可欠です。私はこれを1つのVCだけで行うことはできません。ここで
はUsernameViewControllerのための私が持っているコードです:
let rootRef = FIRDatabase.database().reference()
rootRef.queryOrdered(byChild: "users").queryEqual(toValue: self.chooseUsernameTextField.text!)
.observe(FIRDataEventType.value, with: { (snapshot: FIRDataSnapshot!) in
if snapshot.hasChildren() == false {
print("not found")
} else {
print("usr found")
}
});
ここFirebaseデータベース・セキュリティ・ルール
{
"rules": {
".read": false,
".write": false,
"users": {
".validate": "data.child('username').val() === true",
".read": true
}
}
}
そして最後に、私のデータツリー(マイデータのスクリーンショットのために私が持っているコードですツリーは新しいユーザーを入れ子にしたり、なんらかの理由で価値のないユーザーノードを作成しません)。
Picture of Firebase Data Tree: App Name/Users
データルールとツリーがコードと一致するように正しく設定されているという疑問がありますが、Firebaseセキュリティでユーザー名チェックのコードを完成させるために何をすべきかわからないXY問題に悩まされています。
私を助けてください! :
可能性のある重複した[Firebaseアンドロイド:ユーザ名を一意にする](http://stackoverflow.com/questions/35243492/firebase-android-make-username-unique) – Jay