[英]Javascript push data on Firebase
This is my HTML page: 这是我的HTML页面:
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- Connect to firebase -->
<script src="https://www.gstatic.com/firebasejs/4.9.1/firebase.js"></script>
<script type="text/javascript">
var firebaseConfig = {
apiKey: "MY_API_KEY",
authDomain: "MY_DOMAIN",
databaseURL: "MY_DB_URL",
projectId: "MY_PROJECT_ID",
storageBucket: "MY_STORAGE_BUCKET",
messagingSenderId: "MY_MSG_SENDERID"
};
firebase.initializeApp(firebaseConfig);
</script>
<!-- <script type="text/javascript" src="js/userstatus.js"></script> -->
<script type="text/javascript" src="js/createOffer.js"></script>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<!-- custom CSS -->
<link rel="stylesheet" href="css/style.css">
<title>Nuova offerta</title>
</head>
<body>
<nav class="navbar navbar-dark bg-dark fixed-top navbar-expand-lg">
<a class="navbar-brand" href="index.html"> <img id="logo" width="50px" src="/img/logo_app.png"> </a>
<button id="button_toggle" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#menu_start" aria-controls="menu_start"
aria-expanded="false" aria-label="Toggle navigation" onclick="onCollapseMenuClick()">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="menu_start">
<ul class="navbar-nav mr-auto mt-2 mt-lg-0 ">
<li>
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="offers.html">Offerte</a>
</li>
</ul>
<ul class="navbar-nav navbar-right" id="login_signup_navbar">
<li class="vl"></li>
<li class="nav-item">
<a class="nav-link active" href="signup.html">Gestione</a>
</li>
</ul>
</div>
</nav>
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="container" style="margin-top: 100px;">
<h1>Crea nuova offerta:</h1>
<form>
<div class="form-group">
<label for="title">Titolo</label>
<input id="title" name="title" placeholder="es: segretaria" type="text" class="form-control here" required="required">
</div>
<div class="form-group">
<label for="desc">Descrizione</label>
<textarea id="desc" name="desc" cols="40" rows="5" class="form-control" aria-describedby="descHelpBlock" required="required"></textarea>
<span id="descHelpBlock" class="form-text text-muted">Inserire mansioni da svolgere, titoli di studio richiesti ed eventuali requisiti linguistici.</span>
</div>
<div class="form-group">
<label for="dip">Reparto</label>
<div class="col-6" style="padding-left: 0px;">
<select id="dip" name="dip" class="custom-select" required="required">
<option value="admin">Amministrazione</option>
<option value="comm">Commerciale</option>
<option value="mgz">Magazzino</option>
<option value="trap">Trasporti</option>
</select>
</div>
</div>
<div class="form-group">
<button onclick="sendOffer()" id="myButton" class="btn btn-primary">Pubblica</button>
</div>
</form>
</div>
</body>
</html>
Given that Firebase parameters are corrected, you can clearly see that when I press the button I call the following javascript function: 鉴于Firebase参数已得到纠正,您可以清楚地看到,当我按下按钮时,我将调用以下javascript函数:
function sendOffer(){
var database = firebase.database();
// Create a new ref and log it’s push key
alert('function called');
var obj = {name: "sample_data"}
database().ref("offers/").push(obj);
}
Right now, my Firebase db is empty but, according to the code, I am expecting to see one parent node called 'offers' and then 'sample_data' as child. 现在,我的Firebase数据库为空,但是根据代码,我希望看到一个称为“ offers”的父节点,然后将“ sample_data”作为子节点。 However, everytime I click on the button the related 'sendOffer()' function is called (I can see the alert) but no data are written on the database.
但是,每次我单击按钮时,都会调用相关的“ sendOffer()”函数(我可以看到警报),但是没有数据写入数据库。 I tried to debug it and I saw that I got this error when it comes to push data: TypeError database is not a function .
我尝试对其进行调试,但我发现在推送数据时遇到此错误: TypeError数据库不是一个函数 。
How can I write data to Firebase db? 如何将数据写入Firebase数据库?
You're using database().ref
您正在使用
database().ref
Try without parenthesis after 'database' since your variable already contains the parenthesis for the method firebase.database()
: 尝试在“数据库”之后不加括号,因为您的变量已包含方法
firebase.database()
的括号:
database.ref("offers/").push(obj);
And declare the variable 'database' outside of your function, making it a globla variable, since it should always be available to your database configuration. 并在函数外部声明变量“ database”,使其成为globla变量,因为它对数据库配置应始终可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.