Данные не добавляются в базу данных (firebase)

#javascript #html #firebase #firebase-realtime-database

#javascript #HTML #firebase #firebase-база данных в реальном времени

Вопрос:

Я написал код для добавления предложений в базу данных в разделе предложения, но он не работает, и предложение не добавляется в базу данных. Я не знаю, где я сделал, я допустил ошибку. Пожалуйста, помогите мне найти решение

addoffer.html

 <html>
<head>   
        <script src="https://www.gstatic.com/firebasejs/5.8.5/firebase.js"></script> 
</head>
<body>
        <form enctype="multipart/form-data">

                        <label>Title</label>
                        <input type="text" id="title" placeholder="Company" >

                        <label for="exampleInputEmail1">Redeem Steps</label>
                        <input type="text" class="form-control" id="steps" placeholder="Redeem Steps">




                        <label>Description</label>
                        <textarea rows="5" class="form-control" id="description" placeholder="Here can be your description"></textarea>



                    <button type="submit" class="btn btn-info btn-fill pull-right" onclick="submitclick()">Add Offer</button>

        </form>
<script>
        // Initialize Firebase
        var config = {
          apiKey: "AIzaSyBMC7E0Q2HmqxDnA-yqSslIOhOijC6LL4s",
          authDomain: "sample-51bb2.firebaseapp.com",
          databaseURL: "https://sample-51bb2.firebaseio.com",
          projectId: "sample-51bb2",
          storageBucket: "sample-51bb2.appspot.com",
          messagingSenderId: "917745166311"
        };
        firebase.initializeApp(config);
      </script>
       <script src="addoffer.js"></script>  
</body>    
</html>
  

addoffer.js

 function submitclick()
{

var titled = document.getElementById("title").value;
var stepsd = document.getElementById("steps").value;
var descriptiond = document.getElementById("description").value;
var id=1;

console.log(titled);
console.log(stepsd);
console.log(descriptiond);

//var firebaseheadingRef = firebase.database().ref().child("offers");


firebase.database().ref('offers/' id).set({
    title : titled,
    redeem : stepsd,
    description : descriptiond
  }, function(error) {
    if (error) {
      // The write failed...
      console.log(error);
      alert(error);
    } else {
      // Data saved successfully!
    }
  });

  id  ;
}
  

Я добавил изображение базы данных, в которую я добавил значение предложения вручную

введите описание изображения здесь

Комментарии:

1. вы изменили свои правила firebase в консоли firebase?

2. нет, я не менял правила, все верно

Ответ №1:

Измените это:

 <head>   
    <script src="https://www.gstatic.com/firebasejs/5.8.5/firebase.js"></script> 
</head>
  

в это:

 <head>
  <!-- Firebase App is always required and must be first -->
  <script src="https://www.gstatic.com/firebasejs/5.9.2/firebase-app.js"></script>

  <!-- Add additional services that you want to use -->
  <script src="https://www.gstatic.com/firebasejs/5.9.2/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/5.9.2/firebase-database.js"></script>
<head>
  

Комментарии:

1. есть ли вообще какая-либо ошибка в консоли при открытии вашей веб-страницы?

Ответ №2:

Данные правильно добавлены в базу данных, но с идентификатором 1 , из-за кода вашей submitclick() функции.

Каждый раз, когда вы вызываете эту функцию, вы присваиваете значение 1 локальной (для функции) переменной id , поэтому каждый раз, когда она записывает (и перезаписывает, поскольку вы используете set() метод) в offers/1 узел.

id В конце функции не имеет никакого эффекта: идентификатор следующего вызова устанавливается равным 1.

Вероятно, вам следует использовать push() метод, который сгенерирует новый идентификатор для вашей записи (см. https://firebase.google.com/docs/reference/js/firebase.database .Ссылка#push).

Вы могли бы использовать глобальную id переменную на уровне страницы, но в этом случае у вас могут быть разные пользователи, использующие один и тот же id метод, поэтому действительно рекомендуется использовать push() метод.

Комментарии:

1. @Vinit Mapari Привет, у тебя было время посмотреть на предлагаемое решение?