Uncaught TypeError: messagesRef.pu sh не является функцией - PullRequest
1 голос
/ 29 мая 2020
var firestore =  firebase.firestore();

var messagesRef = firestore.collection("BookingData");


//listen for submit
document.getElementById('bookingForm').addEventListener('submit',submitForm);

function submitForm(e){
 e.preventDefault();

 //get values
 var email = getInputVal('email');
 var packageFields = getInputVal('packageFields');
 var name = getInputVal('name');
 var phone = getInputVal('phone');
 var date = getInputVal('date');

 //save messages
 saveMessage(email, packageFields, name, phone, date);

}

// function to get form values

function getInputVal(id) {
 return document.getElementById(id).value;
}

//save messages

function saveMessage(email, packageFields, name, phone, date) {
 var newMessagesRef = messagesRef.push();
 newMessagesRef.set({
   email:email,
   packageFields:packageFields,
   name:name,
   phone:phone,
   date:date
 });
}

Но это дает ошибку:

Uncaught TypeError: messagesRef.pu sh не является функцией в saveMessage (bookingSubmit. js: 48) в HTMLDivElement.submitForm ( bookingSubmit. js: 35) saveMessage @ bookingSubmit. js: 48 submitForm @ bookingSubmit. js: 35

Почему это происходит и как я могу решить эту проблему?

Проверьте наличие других ошибок.

и убедитесь, что код работает должным образом. Его постоянно выдают ошибки, и теперь мне это надоело.

1 Ответ

2 голосов
/ 29 мая 2020

Вы пытаетесь добавить новый документ в коллекцию под названием BookingData. Но при добавлении данных вы используете метод push(), связанный с firebase Realtime Database. Но переменная messageRef связана с firebase firestore и там не существует метода с именем push() с переменной firestore.

var firestore =  firebase.firestore();

var messagesRef = firestore.collection("BookingData");


//listen for submit
document.getElementById('bookingForm').addEventListener('submit',submitForm);

function submitForm(e){
 e.preventDefault();

 //get values
var email = getInputVal('email');
var packageFields = getInputVal('packageFields');
var name = getInputVal('name');
var phone = getInputVal('phone');
var date = getInputVal('date');

}

// function to get form values

 function getInputVal(id) {
return document.getElementById(id).value;
 }

//save messages

function saveMessage(email, packageFields, name, phone, date) {

  messageRef.add({
   email:email,
   packageFields:packageFields,
   name:name,
   phone:phone,
   date:date
   }).then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
 .catch(function(error) {
  console.error("Error adding document: ", error);
});

  }
...