繁体   English   中英

使用node.js将数据添加到mysql数据库

[英]Adding data to mysql database with node.js

我是编程和尝试使用node.js创建基本应用程序的新手。

我在带有html而不是jade的visual studio上使用node.js。 我有一个简单的表格,里面有名字,姓氏和性别。 我也设法用mysql workbench建立了一个数据库。

我有以下查询,当我运行代码时,该查询将姓名,姓氏和性别成功添加到mysql数据库中。

var user = { "name": "Name", "surname": "Surname", "gender" : "M" };
    connection.query('INSERT INTO studentinfo SET ?', user, function (err, res) {
    if (err) throw err;
});

但是,当我单击提交按钮时,必须从表单中收集数据时,我陷入了困境。

我想这与Ajax有关,我找到了php的一些解决方案,但是我在努力寻找与node.js的解决方案以及实现代码的方式和地点。

这是app.js文件

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var mysql = require('mysql');

var app = express();

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'my_password',
    database: 'userlist',
});

connection.connect();

var user = { "name": "RandomName", "surname": "RandomSurnameName", "gender" : "M" };
connection.query('INSERT INTO studentinfo SET ?', user, function (err, res) {
    if (err) throw err;


});



//connection.query('SELECT * FROM studentinfo', function (err, rows) {
//    if (err) throw err;

//    console.log('Data received from Db:\n');
//    console.log(rows);
//});





// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/contact', routes.contact);
app.get('/newStudent', routes.newStudent);

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});


var createStudent = {

    name: String,
    surname: String,
    dob: Date,
    gender: String,

}


connection.query('insert into userlist set ?', createStudent, function (err, result) {

});

好吧,让我们试一下。

在HTML页面上,您需要提交学生详细信息。 一个非常非常基本的形式如下所示:

<form action="/student" method="post">
  First name:<br>
  <input type="text" name="name"<br>
  Last name:<br>
  <input type="text" name="surname"><br>
  Date of birth:<br>
  <input type="text" name="dob"<br>
  Gender:<br>
  <input type="text" name="gender"><br><br>
  <input type="submit" value="Submit">
</form>

这显然被简化了,但是可以解决问题。 所以,你有一些箱子和一个按钮,将POST这个数据到你的服务器/student航线。

现在,我们需要在快递服务器上处理该路由。 您已经有GET路线,因此添加以下内容:

app.post('/', function (req, res) {
  // this is where you handle the POST request.
  var createStudent = {
    name: req.body.name,
    surname: req.body.surname,
    dob: req.body.dob,
    gender: req.body.gender
   }
   // now the createStudent is an object you can use in your database insert logic.
   connection.query('INSERT INTO studentinfo SET ?', createStudent, function (err, resp) {
     if (err) throw err;
     // if there are no errors send an OK message.
     res.send('Saved succesfully');
   });
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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