2017-01-18 2 views
0

Я пытаюсь добавить нового пользователя в базу данных, но я не хочу повторять пользователя. Следовательно, я пытался проверить и убедиться, что если электронное письмо, указанное в форме, совпадает с адресом электронной почты в базе данных, но оно продолжает добавлять новые данные, хотя письмо уже найдено в базе данных.Проверка фейерверка и 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

Проблема заключается в том, что ваш код выполняет итерации свыше всех детей до ShowOffYourTalents.

Предположительно, каждый ребенок соответствует пользователю. Ваши 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.'); 
     } 
    }); 
Смежные вопросы