使用nodejs express时将表单数据插入mysql数据库

pqwbnv8z  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(462)

对于一个学校项目,我需要将数据从一个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>

有没有人知道我应该如何将数据发送到我的数据库,或者知道一个好的教程来解释我如何做?
谢谢您

blpfk2vs

blpfk2vs1#

要将nodejs/expressjs应用程序连接到数据库(mongodb、mysql等),您需要一个orm库。对于你的情况,我建议续写。所有信息http://docs.sequelizejs.com/

7kjnsjlb

7kjnsjlb2#

在将任何内容保存到数据库之前,必须先将其保存到服务器上。我建议使用内置 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}"`))
bogh5gae

bogh5gae3#

不,你不需要orm库。你可以使用npm的mysql包

相关问题