使用NodeJS Express时将表单数据插入MySQL数据库

时间:2018-05-21 11:47:40

标签: html mysql node.js express handlebars.js

对于学校项目,我需要将数据从html表单插入到我的数据库中。问题是,我之前从未使用过NodeJS,Express,Handlebars或JavaScript,我似乎无法弄清楚它是如何工作的,我目前在我的.hbs文件中有这个表单

public Bitmap textAsBitmap(String text, float textSize) {
    Paint paint = new Paint(ANTI_ALIAS_FLAG);
    paint.setTextSize(textSize);
    paint.setColor(Color.BLACK);
    paint.setTextAlign(Paint.Align.LEFT);
    float baseline = -paint.ascent(); // ascent() is negative
    int width = (int) (paint.measureText(text) + 0.0f); // round
    int height = (int) (baseline + paint.descent() + 0.0f);

    int actualWidth = width;
    if (width > height) 
        height = width;
    else 
        width = height;
    Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(image);
    canvas.drawText(text, width / 2 - actualWidth / 2, baseline, paint);
    return image;
}

我还设法使用以下脚本提取表单中字段的值,但我不认为我可以使用它,因为我必须使用NodeJS

<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>

有谁知道我应该如何将数据发送到我的数据库,或者知道一个很好的教程来解释我该怎么做?

谢谢

3 个答案:

答案 0 :(得分:0)

要将NodeJS / ExpressJS应用程序连接到数据库(mongodb,mysql,...),您需要一个ORM库。对于你的情况,我建议Sequelize。所有信息都在http://docs.sequelizejs.com/

答案 1 :(得分:0)

不,您不需要ORM库。您可以使用npm

中的mysql包

答案 2 :(得分:0)

在将任何内容保存到数据库之前,您必须将其发送到您的服务器。我建议使用内置fetch,或者如果您希望更好的浏览器支持,请使用axiosrequest-promisesuperagent。所有这些包都可以在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}"`))