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

Posted

技术标签:

【中文标题】使用 node.js 将数据添加到 mysql 数据库【英文标题】:Adding data to mysql database with node.js 【发布时间】:2017-07-14 09:04:09 【问题描述】:

我是编程新手,正在尝试使用 node.js 创建一个基本应用程序。

我在 Visual Studio 上使用 node.js 与 html 而不是玉。我有一个简单的表格,上面有名字、姓氏和性别。我还设法用 mysql 工作台建立了一个数据库。

我有以下查询,当我运行代码时,它成功地将姓名、姓氏和性别添加到 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) 

);

【问题讨论】:

你能告诉我们更多关于代码/设置的信息吗?你的页面是什么样的?你的服务器是什么样的? 我现在不在系统中,但我只是从默认的快速模板开始,并添加了这个简单的表单来学习如何将值输入数据库。另外,我没有得到你关于服务器的问题。你能详细说明一下吗? 我不确定您在哪里需要帮助。是将值从表单提交到 express 服务器,在服务器上创建路由来处理提交,从路由处理程序调用控制器方法,还是以上所有? 这个术语对我来说太高级了。简而言之,我只是想在按下“提交”按钮时将输入字段中的“姓名”和“姓氏”传输到数据库中。 您可能应该阅读基本教程,因为要做到这一点需要做很多事情。 【参考方案1】:

好的,让我们试一试。

在 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路由。

现在我们需要在 express 服务器上处理该路由。你已经有了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');
   );
 );

【讨论】:

不错!这样可行!非常感谢....我尝试使用 mysql 表的一些语句和设置,最后它工作了。关于数据库的一些事情我稍后可以弄清楚,但我对这个案例唯一想知道的是最后一行 -->> re.send();在新页面上提供评论,如果我删除该声明,带有表单的页面将保留,但浏览器显示某些过程正在进行中。那里发生了什么? 你可以试试res.status(200).send() 这不起作用,但我确实找到了答案...位置重新加载 onsubmit。感谢您的帮助!

以上是关于使用 node.js 将数据添加到 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 和 Node.js 将捕获的图像存储到 MySQL 数据库中

从函数中导出数据 [mysql, node.js, discord.js]

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?

如何使用 node.js 将多行 JSON 数据同时插入 MySQL?

使用 node.js 中的数据库插件将文件添加到 heroku 应用程序

从 Node.js 将 Json 存储到 MySQL 数据库中