我正在使用Vue和Firebase构建应用。我是Firebase的新手,我遇到了一些问题。我尝试在数据库中存储名称+电子邮件。我想要的是首先检查电子邮件是否已经在数据库中,如果没有,则运行另一个存储名称+电子邮件的功能。如果电子邮件存储在数据库中,我想输出提醒并取消提交。
因此,检查数据库中的电子邮件进展顺利,它将输出警报,并且我还能够检索数据。但问题出在的地方是当我输入不在数据库中的电子邮件时。当我输入一个新的电子邮件(和名称)时,它将检查数据库并返回false但是然后立即进行另一次调用(我不知道为什么,这就是我猜的问题)并且它将返回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,不在数据库中)