Firebase делает несколько вызовов даже с оператором if / else JS

1

Я создаю приложение с Vue, а также Firebase. Я новичок в Firebase, и у меня есть некоторые проблемы с ним. Я пытаюсь сохранить имена + электронные письма в базе данных. Я хочу проверить сначала, если письмо уже находится в базе данных, а если нет, запустите другую функцию, которая будет хранить имя + адрес электронной почты. Если электронное письмо хранится в базе данных, я хотел бы отправить предупреждение и отменить отправку.

Таким образом, проверка электронной почты в базе данных идет неплохо, выводит предупреждение, а также я могу получить данные. Но где проблема заключается в том, что когда я ввожу электронное письмо, которого нет в базе данных. Когда я ввожу новое электронное письмо (и имя), он проверяет базу данных и возвращает ложь, но сразу же делает другой вызов (я не знаю, почему, эта проблема, я думаю), и он вернет true, и предупреждение о том, что он уже существует, в то же время. Затем он перейдет к другой функции для хранения данных, поскольку это был результат первого вызова (который был ложным).

Мой код JS:

checkForm() {

        let app = this;

        if (this.name == '' || this.emailadress == '') {
            alert('You have to fill out the form');
        } else {

            app.getFirebase();

        }
},

getFirebase() {

        let app = this;

        var ref = firebase.database().ref().child('/aanmeldingen/');
        ref.on('value', function(snapshot) {

            const array = [];

            snapshot.forEach(function(childSnapshot) {
              var checkEmail = childSnapshot.val().email;
              array.push(checkEmail);
            });

            const res = array.includes(app.emailadress);
            console.log(array);
            console.log(res);

              if(res) {
                alert('You already have entered the giveaway');
              } else if (res == false) {

                app.store();

              }
        });
},

store() {
                this.step_two = false;
                this.active_two = false;

                this.active_three = true;
                this.step_three = true;

                let app = this;

                firebase.database().ref('/aanmeldingen/').push({
                username: app.name,
                email: app.emailadress,
                });
}

Скриншот консоли (введен Jane, а не в базе данных)

Изображение 174551

Теги:
firebase
vue.js
firebase-realtime-database

1 ответ

3
Лучший ответ

Вы должны использовать один раз() вместо on(). on() оставляет слушателя прикрепленным, поэтому, когда вы вводите данные в store() слушатель снова срабатывает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню