VueとFirebaseでアプリケーションを構築しています。私はFirebaseを初めて使っていて、いくつか問題があります。私は名前+電子メールをデータベースに格納しようとします。私が望むのは、電子メールがすでにデータベースに入っているかどうかを最初に確認し、そうでなければ、名前+電子メールを格納する別の機能を実行することです。電子メールがデータベースに格納されている場合は、アラートを出力して送信をキャンセルしたいと考えています。Firebaseはif/else文でも複数の呼び出しを行います。JS
データベース内の電子メールのチェックが非常にうまくいくので、アラートが出力され、データを取得することもできます。しかし、どこに問題があるのかは、データベースにない電子メールを入力するときです。私は新しい電子メール(と名前)を入力すると、データベースをチェックして偽を返しますが、すぐに別の呼び出しを行います(なぜ、私は推測する問題です)。 、 同時に。それは、それが最初の呼び出し(false)の出力だったので、データを格納する別の関数に進みます。
私の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,
});
}
スクリーンショットは、あなたが代わりにon()のonce()を使用する必要があります