Вставка данных формы в базу данных MySQL при использовании NodeJS Express - PullRequest
0 голосов
/ 21 мая 2018

Для школьного проекта мне нужно вставить данные из HTML-формы в мою базу данных.Проблема в том, что я никогда раньше не работал с NodeJS, Express, Handlebars или JavaScript, и я не могу понять, как это работает. В настоящее время у меня есть эта форма в моем файле .hbs

<div class="row">
    <form action="" method="post" class="col s12">
    <div class="row">
        <div class="col s3 offset-s1">
            <label>Sensor Type</label><br>
            <label>
                <input id="combo" class="with-gap" name="sensorType" type="radio"/>
                <span>Temperature & Humidity</span>
            </label><br>
            <label>
                <input id="temp" class="with-gap" name="sensorType" type="radio"/>
                <span>Temperature</span>
            </label><br>
            <label>
                <input id="humid" class="with-gap" name="sensorType" type="radio"/>
                <span>Humidity</span>
            </label>
        </div>
    </div>
    <div class="row">
        <div class="input-field col s3 offset-s1">
            <select id="sensorForest">
                <option value="" disabled selected>Choose your forest</option>
                <optgroup label="The Netherlands">
                    <option value="streekbos">Streekbos Bovenkarspel</option>
                </optgroup>
                <optgroup label="United States of America">
                    <option value="losAngeles">Los Angeles National Forest</option>
                </optgroup>
            </select>
            <label>Forest</label>
        </div>
        <div class="input-field col s3">
            <textarea id="textarea2" class="materialize-textarea" data-length="50"></textarea>
            <label for="textarea2">Enter sensor Location</label>
        </div>
    </div>
    <div class="row">
        <div class="input-field col s6 offset-s1">
            <div class="input-field col s6">
                <input id="latitude" type="text" class="validate">
                <label for="latitude">Latitude</label>
            </div>
            <div class="input-field col s6">
                <input id="longitude" type="text" class="validate">
                <label for="longitude">Longitude</label>
            </div>
        </div>
    </div>
    <div>
        <div class="row">
            <div class="col s12 offset-s1">
                <button class="btn waves-effect waves-light" id="submit">Submit
                    <i class="material-icons right">send</i>
                </button>
            </div>
        </div>
    </div>
    </form>
</div>

Мне также удалосьИзвлеките значения полей в форме, используя следующий скрипт, но я не думаю, что смогу использовать это, поскольку мне нужно использовать NodeJS

<script>
var submit = document.getElementById("submit");

submit.onclick = function () {
    //var sensorType = document.getElementById("sensorType").value;
    var sensorForest = document.getElementById("sensorForest").value;
    var sensorLocation = document.getElementById("textarea2").value;
    var latitude = document.getElementById("latitude").value;
    var longitude = document.getElementById("longitude").value;

    console.log(sensorForest, sensorLocation, latitude, longitude);
};
</script>

Кто-нибудь знает, как я должен отправлять данные вмоей базе данных или знаете хороший учебник, который объясняет мне, как это сделать?

Спасибо

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

нет, вам не нужна библиотека ORM.Вы можете просто использовать пакет mysql из npm

0 голосов
/ 21 мая 2018

Ну, прежде чем что-то сохранить в базе данных, вы должны получить его на свой сервер.Я рекомендую использовать встроенную fetch или, если вы хотите улучшить поддержку браузера, используйте axios, request-promise или superagent.Все эти пакеты можно найти на npm

Клиенте

Под вашим обработчиком кликов

fetch('http://localhost:3000/sensors', {
  method: 'POST',
  headers: {
    'content-type': 'application/json'
  },
  body: JSON.stringify({
    sensorForest,
    sensorLocation,
    latitude,
    longitude,
  })
})
.then(function (results) {
  return results.json()
})
.then(function (results) {
  console.log('got results', results)
})
.catch(function (ex) {
  console.error(ex)
})

Зависимости

npm init -y && npm i --save express body-parser

Сервер

const express = require('express')
const { json } = require('body-parser')

const app = express()

const PORT = process.env.PORT || 3000

app.post('/sensors', json(), (req, res, next) => {
  const body = req.body
  // ...save `body` to database
  // use mysql, sequelize, or knex
  res.send(body)
})

app.listen(PORT, () => console.info(`Server listening on port "${PORT}"`))
0 голосов
/ 21 мая 2018

Чтобы подключить приложение NodeJS / ExpressJS к базе данных (mongodb, mysql, ...), вам нужна библиотека ORM.Для вашего случая я предлагаю Sequelize.Вся информация на http://docs.sequelizejs.com/

...