#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 Привет, у тебя было время посмотреть на предлагаемое решение?