Снимок базы данных Firebase в реальном времени не возвращает истину или ложь - PullRequest
0 голосов
/ 16 апреля 2019

Функция снимка, которую я использую, не даст мне значения, которое затем не выполнит код.

База данных все соединена и удаляет оператор if и проверку снимка пишет в базу данных.Однако я хочу, чтобы это работало, так как я не хочу сбрасывать пользовательские переменные, поэтому мне нужно проверить, существует ли он уже.

function createUserData(){
    var ref = firebase.database().ref("users/" + uid);
ref.once("value")
  .then(function(snapshot) {
        userExistCheck = snapshot.exists();
    });

    if (userExistCheck == false){
        displayName = document.getElementById("name-input").value;
        firebase.database().ref('users/' + uid).set({
        username: displayName,
        email: email,
        module1: false,
        module2: false,
        module3: false,
        module4: false,
        module5: false,
        module6: false
      });
        window.alert("working")
    }
    else{
        window.alert(uid);
    }
}

Если пользователя не существует, он должен добавить пользователя, однаконе делает.Вывод вообще отсутствует, и выводится окно предупреждения для uid.

1 Ответ

0 голосов
/ 16 апреля 2019

Этот блок

ref.once("value")
  .then(function(snapshot) {
        userExistCheck = snapshot.exists();
    });

является асинхронным, поэтому перед тем, как он получит ваши данные, он выполняет

 if (userExistCheck == false){
        displayName = document.getElementById("name-input").value;
        firebase.database().ref('users/' + uid).set({
        username: displayName,
        email: email,
        module1: false,
        module2: false,
        module3: false,
        module4: false,
        module5: false,
        module6: false
      });
        window.alert("working")
    }
    else{
        window.alert(uid);
    }

, который не будет обновляться после проверки значения, если существует или нет, чтобы решить эту проблему, переместите ваш код

function createUserData(){
    var ref = firebase.database().ref("users/" + uid);
ref.once("value")
  .then(function(snapshot) {
        userExistCheck = snapshot.exists();
 if (userExistCheck == false){
        displayName = document.getElementById("name-input").value;
        firebase.database().ref('users/' + uid).set({
        username: displayName,
        email: email,
        module1: false,
        module2: false,
        module3: false,
        module4: false,
        module5: false,
        module6: false
      });
        window.alert("working")
    }
    else{
        window.alert(uid);
    }
    });


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...