2017-01-18 10 views
0

データベースに新しいユーザーを追加しようとしていますが、繰り返しユーザーが必要ではありません。したがって、フォームに記載されている電子メールがデータベース内の電子メールと同じだが、電子メールがすでにデータベース内に見つかっているにもかかわらず、新しいデータを追加し続けていることを検証して確認しました。FirebaseとJavascriptのバリデーション

function checkUser(){ 
    var sFName = document.getElementById("sfname").value; 
    var sLName = document.getElementById("slname").value; 
    var sPassword = document.getElementById("spassword").value; 
    var sEmail = document.getElementById("semail").value; 
    var config = { 
     apiKey: "some-key", 
     authDomain: "some-domain.firebaseapp.com", 
     databaseURL: "https://some-domain.firebaseio.com", 
     storageBucket: "some-domain.appspot.com", 
     messagingSenderId: "some-id" 
    }; 
    if(firebase.apps.length===0){ 
     firebase.initializeApp(config);       
     var database = firebase.database(); 
     var dbRef = database.ref('ShowOffYourTalents'); 
     var postData = { 
      firstname : sFName, 
      lastname : sLName, 
      email : sEmail, 
      password : sPassword, 
      birthdate: "", 
      gender: "", 
      address: "", 
      interests: "", 
      NRIC: "" 
     }; 
     dbRef.once('value',function(snapshot){ 
      snapshot.forEach(function(childSnapshot){ 
       var childData = childSnapshot.val(); 
       var cEmail = childData.email; 
       if(sEmail == cEmail){ 
        document.getElementById("semail").style.borderColor = "red"; 
        document.getElementById("error_3").innerHTML = "User already exists!<br/>"; 
       }else if (sEmail !== cEmail){ 
        dbRef.child(sFName+' '+sLName).set(postData); 
        document.getElementById("response").innerHTML = 
        "Registered"; 
       } 
      }); 
     }); 
    } 
} 

コードが実行されると、「ユーザーは既に存在します」が表示されますが、データベースには新しいデータが作成されます。

答えて

0

問題は、すべての子どものを反復処理するという問題です。

おそらく、各子はユーザーに対応します。 ifステートメントテストそれぞれユーザーの電子メールですので、"User already exists!"ブランチ"Registered"の両方を反復処理中に実行することができます。

代わりに、既存のユーザーを探すためにクエリを使用することができます。

database.ref('ShowOffYourTalents') 
    .orderByChild('email') 
    .equalTo(sEmail) 
    .once(function (snapshot) { 
     if (snapshot.numChildren() === 0) { 
      console.log('User does not exist.'); 
     } else { 
      console.log('User exists.'); 
     } 
    }); 
関連する問題