Я пытаюсь предотвратить дублирование идентификатора электронной почты и номера телефона, поэтому сначала после отправки формы я проверяю идентификатор электронной почты и номер телефона в базе данных.Если какой-либо из них существует, он должен отобразить сообщение об ошибке email already exists in the database
, иначе он должен отправить данные в базу данных реального времени.Моя заявка работает нормально для первой отправки формы.Если я отправляю форму с новыми значениями во второй раз, данные добавляются дважды.Если я отправляю форму с новыми значениями в третий раз, значения передаются 3 раза и помещаются в мою базу данных firebase, и даже выдается сообщение об ошибке.Он попадает в условие if и else из второй отправки формы с новыми значениями.Любые исправления, пожалуйста, помогите мне.
Ниже мой код, который я пробовал
firebase.initializeApp(firebaseConfig);
// Listen for form submit
document.getElementById('contactform1').addEventListener('submit', submitForm);
// Submit form
function submitForm(e) {
e.preventDefault();
// Get values
var fname = getInputVal('fname');
var lname = getInputVal('lname');
var newEmail = getInputVal('email');
var newPhone = getInputVal('phone');
var newskills = getInputVal('skills');
var newjobId = getInputVal('jid');
var newlinkedin = getInputVal('linkedin');
var newgithub = getInputVal('github');
var newlocation = getInputVal('location');
saveMessage(fname, lname, newEmail, newskills, newPhone, newjobId, newlinkedin, newgithub, newlocation);
}
function saveMessage(fname, lname, newEmail, skills, newPhone, jobId, linkedin, github, location) {
let ref = firebase.database().ref().child('self/data/');
ref.once('value', snap => {
if (snap.exists()) {
snap.forEach(childSnapshot => {
var email = childSnapshot.child('email').val();
var phone = childSnapshot.child('phone').val();
console.log(status);
if (newEmail.trim() === email.trim() || newPhone.trim() === phone.trim()) { //check if email exists
console.log("email already exists in the database");
} else {
console.log('hello');
firebase.database().ref().child('self/data/').push().set({
name: fname + " " + lname,
email: email,
phone: phone,
skills: skills,
jobId: jobId,
linkedin: linkedin,
github: github,
location: location
});
}
});
} else {
firebase.database().ref().child('self/data/').push().set({
name: fname + " " + lname,
email: email,
phone: phone,
skills: skills,
jobId: jobId,
linkedin: linkedin,
github: github,
location: location
});
}
});
}
// Function to get get form values
function getInputVal(id) {
return document.getElementById(id).value;
}