私は個々のユーザノードを持つデータベースをFirebaseに持っています。各ユーザのノードには、それらに関連するデータがあり、プライベートになります。それに加えて、私は登録された電子メールのコレクションであるノードを作成したい。その理由は、ユーザがサインインVC上にいて、ユーザが電子メールを入力したときです。電子メールがすでに登録されている場合、画像ビューは緑色に変わります。ただし、電子メールがデータベースにない場合(または電子メールアドレス形式と一致しない場合)、イメージは赤色になります。textfield.textとfirebaseの文字列を比較するswift
以前の質問に対する以前の回答は、私が '。'を変更する必要があることを示しています。電子メールアドレスの '、'に。 @ gmail.comはgmailとして保存されます。
私はそれを持っています。
FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in
if error == nil {
let email = firstContainerTextField.text ?? ""
let newString = email.replacingOccurrences(of: ".", with: ",", options: .literal, range: nil)
self.ref.child("users").child("allUsers").child(newString).setValue(true)
self.ref.child("users").child((user?.uid)!).setValue(["Email": email])
FIRAuth.auth()!.signIn(withEmail: email,
password: password)
} else {
//registration failure
}
これは、新規ユーザーVC(部分)のコードです。
だから、「ユーザー」と「ALLUSERS」と言うのノードがFirebaseコンソール上で次のようになります
users
allUsers
[email protected],com: true
[email protected],com: true
「真」の部分は、ちょうどので、私は、データベースへのボブ@ボブ、COMを得ることができました。 ..真の部分は何のためにも使われることはありません。
私は正直に何をすべきかを把握することはできませんVCにログオン
は前の回答はhasChildren()
を使用するように言ったと私はそれを使用し、その で何をすべきかをGoogleで検索し、私が試しましたこの
ref.child("users").child("allUsers").queryEqual(toValue: newString)
.observe(.value, with: { snapshot in
if snapshot.hasChildren() {
for child in snapshot.children.allObjects as! [FIRDataSnapshot] {
....
}
});
のようなものを使用してしかし、私はちょうどそれをどこに行くように見えることはできません。
textfield.text ==ファイヤーベースに既に格納されている電子メールかどうかを簡単に確認するにはどうすればよいですか?
は
を使用することです完全にするため
それは実際に何かをされた後のために、しかし、それはデータベースで持っていても「電子メールが見つかりません」というメッセージだけを出力します – RubberDucky4444
@ RubberDucky4444あなたのFirebase構造が私が投稿したものと同一で、コードが同じであればコピーして貼り付ける私のプロジェクト。あなたのemailsRef = rootRef.child( "emails")も確認してください。 – Jay
電子メールは私が比較しようとしているものなので、私が変更したのは 'toValue: "[email protected]")' toValue:email 'です。 – RubberDucky4444