我自己的js验证无效,我也不知道为什么

时间:2019-01-15 10:50:50

标签: javascript firebase

验证函数自己运行,但在另一个函数中调用时无效。我要检查的只是查看电子邮件地址是否已在数据库中。

我尝试了太多的事情在这里提到,但这是最终的代码。当我在chrome中运行该函数时,它可以按预期工作,但是在另一个函数中调用它不会产生相同的结果。

var userExist = 'not set';

function checkEmail(email){
  firebase.database().ref().child("users").orderByChild("email").equalTo(email).on('value', function (snapshot) {
    snapshot.forEach(function(childSnapshot) {
       var name = childSnapshot.val();
      if(name.email === email){
        userExist = true;
      }
    });
 });
}

document.querySelector('#mySubmit').addEventListener('click', function(e) {

  const today = new Date();
  const userID = uniqueID();
  const firstName = document.querySelector('#firstName').value;
  const lastName = document.querySelector('#lastName').value;
  const email = document.querySelector('#email').value;
  const address = document.querySelector('#addressLine').value;
  const city = document.querySelector('#city').value;
  const province = document.querySelector('#province').value;
  const postalCode = document.querySelector('#postalCode').value;
  const createdDate = `${today.getFullYear()} - ${today.getMonth() + 1} - ${today.getDate()}`

  checkEmail(email);

  if(userExist === 'not set'){
    writeUserData(userID, firstName, lastName, email, address, city, province, postalCode, createdDate);
    showAlert('The client has been added to the Database', 'success')
  } else {
    showAlert('The email address is already in use', 'danger')
  }

基本上,checkEmail(email)应该将全局var userExist =“ not set”更改为true。在控制台中执行此操作即可。

我真的是想让它仅与香草JS一起使用。我知道有一些库和框架可以简化这一过程。

此外,我仍然是一名学习者,因此代码对于您而言可能不是“可接受的”。 :-)

编辑:称我为愚蠢,但我认为问题可能出在此:

setTimeout(function(){
    window.location.reload()
  }, 2000)

因为我没有使用任何库,所以我不知道另一种刷新页面的方法,以便显示新添加的“客户端”。我现在也认为这是问题所在,因为checkEmail(email)可能会更改全局变量,但是随后页面重置将其更改回原来的位置,因此我的if语句无法按预期工作。

0 个答案:

没有答案