Перед сохранением новых значений в базе данных извлеките данные из базы данных и проверьте, совпадает ли адрес электронной почты, указанный в форме, с адресом электронной почты, полученным из базы данных. Например:
var newEmail = getInputVal('email');
firebase.database().ref().child('self/data/' ).on('child_added', snap => {
var name = snap.child('name').val();
var email = snap.child('email').val();
if(newEmail.trim() === email.trim())
{
console.log("email already exists in the database");
}
else
{
saveMessage(fname, lname, newEmail, skills, phone, jobId, linkedin, github, location);
}
});
Попробуйте следующее:
firebase.initializeApp(firebaseConfig);
// Reference messages collection
// 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, phone, jobId, linkedin, github, location) {
let ref = firebase.database().ref().child('self/data/');
ref.on('value', snap => {
if(snap.exists())
{
snap.forEach(childSnapshot => {
var name = childSnapshot.child('name').val();
var email = childSnapshot.child('email').val();
var phone = childSnapshot.child('phone').val();
var skills = childSnapshot.child('skills').val();
var jobId = childSnapshot.child('jobId').val();
var linkedin = childSnapshot.child('linkedin').val();
var github = childSnapshot.child('github').val();
var location = childSnapshot.child('location').val();
var status = childSnapshot.child('status').val();
console.log(status);
if (newEmail.trim() === email.trim())
{ //check if email exists
console.log("email already exists in the database");
}
else
{
console.log('hello');
firebase.database().ref().child('self/data/' + phone).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/' + phone).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;
}
Сначала необходимо получить значения из формы, а затем вызвать метод saveMessage
в методе проверки, существует ли узел self/data
, затем извлечь данные и проверить, существует ли электронная почта в базе данных.