Как добавить данные в firebase, используя node js? - PullRequest
0 голосов
/ 04 апреля 2020

Я создаю панель администратора, в которой пользователь вводит данные автомобиля и сопоставляется с моей базой данных Firebase в режиме реального времени. Когда пользователь нажимает сохранить, поля ввода должны быть сопоставлены с базой данных. Я попробовал все там, но это просто не работает.

Когда я нажимаю на сохранить, я получаю следующую ошибку:

validation.ts:145 Uncaught Error: Reference.set failed: First argument contains undefined in property 'cars.New car.newCar.transmission'
at rc (validation.ts:145)
at validation.ts:204
at Cu (util.ts:417)
at rc (validation.ts:185)
at validation.ts:204
at Cu (util.ts:417)
at rc (validation.ts:185)
at Hu (validation.ts:122)
at Df.set (Reference.ts:137)
at addData (addcar.html:96)

Ниже приведены мои html и javascript код.

//config is add here
  // initialize firebase  
  firebase.initializeApp(firebaseConfig);
  //this.database = firebase.database();
  
  function addData()
  {
    var databaseRef= firebase.database().ref();
    var storesRef =databaseRef.child('Cars/new car');
    var addCar = storesRef.push();
    
    addCar.set({
        name:$("#car-name").val(),
        transmission:$("#car_transmission").val()
    });

  }
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha256-3edrmyuQ0w65f8gfBsqowzjJe2iM6n0nKciPUp8y+7E=" crossorigin="anonymous"></script>
     <script src="https://www.gstatic.com/firebasejs/7.13.2/firebase.js"></script>
</head>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="container-fluid">
        <a class="navbar-brand" href="/public/admin.html">
            Rentacabs Admin
        </a>

        <div class="dropdown navbar-right">
            <button 
            id="user-email"
            class="btn btn-secondary dropdown-toggle"
            type="button"
            data-toggle="dropdown"
            aria-haspopup="true"
            aria-expanded="false"
            >
                incubsolutions@gmail.com
            </button>

            <div 
                class="dropdown-menu"
                aria-labeledby="user-email"
            >
                <a class="dropdown-item" id="btn-logout" href="#">
                    Logout
                </a>
            </div>
        </div>
    </div>
</nav>
<h2>Cars</h2>

<hr />

<div class="row">

    <div class="col-lg-5">
        <h4>Add new</h4>
        <form id="category-form">
            <div class="form-group">
                <label for="car-name">Enter car name</label>
                <input type="text" class="form-control" id="car-name" />
            </div>
            <div class="form-group">
                <label for="fuel_type">Fuel Type</label>
                <select name="" class="form-control" id="fuel_type">
                    <option value="petrol">Petrol</option>
                    <option value="diesel">Diesel</option>
                </select>
            </div>
            <div class="form-group">
                <label for="car_milege">Milege</label>
                <input type="text" class="form-control" id="car_milege" />
            </div>
            <div class="form-group">
                <label for="car_transmission">Transmission</label>
                <select name="" class="form-control" id="fuel_type">
                    <option value="automatic">Automatic</option>
                    <option value="Manual">Manual</option>
                </select>
            </div>
            <div class="form-group">
                <label for="car_rate">rate per km</label>
                <input type="text" class="form-control" id="car_rate" />
            </div>
            <div class="from-group">
                <button id="save-car" type="submit" class="btn btn-primary" onclick="addData()">Save</button>
            </div>
        </form>
    </div>
</div>

любая помощь приветствуется, спасибо заранее.

1 Ответ

0 голосов
/ 04 апреля 2020

Это потому, что вы повторно используете идентификатор fuel_type для своего поля transmission:

 <label for="car_transmission">Transmission</label>
 <select name="" class="form-control" id="fuel_type">
 //....

А затем у вас возникает другая проблема: ваша кнопка имеет тип type="submit". Ваша форма отправляется до , когда запускается метод Firebase. Вы должны изменить тип кнопки на button. См. W3 спецификацию для более подробной информации о типах кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...