Почему я не могу добавить информацию в Firebase db? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь подключить свое веб-приложение к моей базе данных Firebase, но оно не будет добавлять информацию к нему.Я хотел бы, чтобы пользователь вводил информацию в систему, и эта информация сохранялась в базе данных под названием «appts»:

Функция JS:

var config = {
apiKey: "____________",
authDomain: "southern-motors.firebaseapp.com",
databaseURL: "https://southern-motors.firebaseio.com",
projectId: "southern-motors",
storageBucket: "southern-motors.appspot.com",
messagingSenderId: "852338882104"
};
firebase.initializeApp(config);

var messagesRef = firebase.database().ref('appts');

document.getElementById('appts').addEventListener('submit', addAppt);
function addAppt(e) {
  e.preventDefault();
var inputName = document.getElementById("customerName").value;
var inputEmail = 
document.getElementById("customerEmail").value.toLowerCase();
var inputPhone = document.getElementById("customerPhone").value;
var inputDate = document.getElementById("customerDate").value;

messagesRef.push({
                name: inputName,
                email: inputEmail,
                phone: inputPhone,
                date: inputDate
            }).then(function() {
console.log("Document successfully written!");
location.reload();
})
.catch(function(error) {
console.error("Error writing document: ", error);
});

}

Форма ввода:

<div class="contact-form">
         <form id="appts" 
action="https://formspree.io/MYEMAIL" method="POST">
        <label>Name: </label><input id="customerName" class ="form-control" 
type="text" name="Name of Customer" required></input>

        </br>
        <label>Email Address: </label><input id="customerEmail" class="form- 
control" type="email" name="Email Address" required></input>
        </br>

        <label>Phone no.: </label><input id="customerPhone" class ="form- 
control" type="number" name="Phone No." required></input>
        </br>
        <label>Date & Time of Test Drive: </label><input id="customerDate" 
class ="form-control" type="datetime-local" name="Date & Time of Test Drive" 
required></input>
        </br>

        <input type="submit" value="Submit">
    </form>
</div>

Аналогичная функция «зарегистрировать пользователя» работает в другой форме, поэтому я не уверен, почему это не работает.Все предложения приветствуются.

1 Ответ

0 голосов
/ 01 марта 2019

Я проверил ваш код, и он работал как предусмотрено.Это означает, что проблема с разрешениями.

Проверьте консоль после нажатия кнопки отправки, и вы, скорее всего, увидите эту ошибку:

Error writing document:  Error: PERMISSION_DENIED: Permission denied
    at firebase.js:1
    at Dr (firebase.js:1)
    at t.callOnCompleteCallback (firebase.js:1)
    at firebase.js:1
    at firebase.js:1
    at e.onDataMessage_ (firebase.js:1)
    at t.onDataMessage_ (firebase.js:1)
    at t.onPrimaryMessageReceived_ (firebase.js:1)
    at t.onMessage (firebase.js:1)
    at t.appendFrame_ (firebase.js:1)
(anonymous) @ test.html:65
Promise.catch (async)
addAppt @ test.html:64

Эта ошибка означает, что у вас нет доступа.Посетите страницу безопасности Firebase , чтобы узнать больше о правилах безопасности.

Если вы хотите открыть базу данных для всех, используйте следующие правила:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...