简体   繁体   English

Firebase上的Javascript推送数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM