node mysql orm2_node-mysql2操作数据库

这篇博客介绍了如何使用node-mysql2库进行数据库操作,包括安装、创建连接池和执行SQL语句。示例代码展示了一种通过Express框架处理HTTP请求,向MySQL数据库查询和添加数据的方法。
摘要由CSDN通过智能技术生成

上一篇说到用node-ORM框架来操作数据库,可以减少我们去写sql语句。今天用node-mysql2来对数据库进行操作。这个可能要求我们会一些基础的增删改查的sql语句。有兴趣的可以去看看mysql的一些简单语句。

安装mysql2

npm i mysql2 -S 或

cnpm i mysql2 -S 或

yarn add mysql2

因为demo中还是要用到node跨域,所以我直接在之前讲node跨域的代码上做修改。

node-mysql2连接数据库提供了两种连接方式:GitHub:https://github.com/sidorares/node-mysql2

第一种通过createConnection来创建连接,今天我们主要说第二种通过创建连接池的方式。

主要是因为使用连接池特别灵活,大大提高了我们的效率。

连接池通过重用以前的连接,使它们处于打开状态而不是关闭状态,从而减少了连接到MySQL服务器的时间。

由于避免了建立新连接带来的所有开销,因此可以提高查询的延迟。

简单的说一下第一种方法的步骤,大家可自行尝试:

//1.引入mysql2

const mysql = require("mysql");

//2创建到数据库服务器连接

var conn = mysql.createConnection({

host:"127.0.0.1",

user:"root",

password:"密码",

database:"数据库名称",

port:3306

});

//3创建SQL语句并且发送SQL语句

var sql = "";//操作数据库的增删改查语句

conn.query(sql,[],//如果查询数据库有变量的话放到数组中,没有变量可省略这个参数

(err,result)=>{

if(err){

console.log(err);

}else{

console.log(result);

}

})

//4关闭连接

conn.end();

第一种方法基本就遵循上面四步,下面说一下第二种方法,同样用demo举例

这次用的Mac系统,装了mysql数据库,并且已经提前创建了数据库和表数据,用两个demo来说明对数据库的操作,查询数据和添加数据,接下来看代码。

目录结构:

89c3656500c0

1.png

server.js

const express = require("express");

const bodyParser = require("body-parser");

const mysql2 = require("mysql2")

const app = express();

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}))

const allowCrossDomain = function(req, res, next){

res.header('Access-Control-Allow-Origin', '*');//自定义中间件,设置跨域需要的响应头。

res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');//允许任何方法

res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,X-Session-Token'); //允许任何类型

next()

}

app.use(allowCrossDomain);

const pool = mysql2.createPool({//创建连接池

host: 'localhost',

user: 'root',

password: "数据库密码",

database: 'jindu_loan',//数据库名称

connectionLimit: 10//连接池大小

})

app.get("/",(req, res)=>{

pool.getConnection((err, conn)=> {

const sql = "select * from jd_user";//查询jd_user表中的用户

conn.query(sql, async(err, result)=>{

if (err) throw err;

await res.json(result);

conn.release();//数据查询成功后归还连接

})

})

})

app.listen(3000,() => console.log("server on http://localhost:3000"))

89c3656500c0

1.png

查询到了用户数据,图片中展示了部分用户。

查询没问题了,接下来我们要往jd_user表中添加一个用户接着修改server.js,

先查询一下js_user表中有多少个字段

89c3656500c0

2.png

查询数据库发现共有9个字段。

const express = require("express");

const bodyParser = require("body-parser");

const mysql2 = require("mysql2")

const app = express();

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}))

const allowCrossDomain = function(req, res, next){

res.header('Access-Control-Allow-Origin', '*');//自定义中间件,设置跨域需要的响应头。

res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');//允许任何方法

res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,X-Session-Token'); //允许任何类型

next()

}

app.use(allowCrossDomain);

const pool = mysql2.createPool({

host: 'localhost',

user: 'root',

password: "123456",

database: 'jindu_loan',

connectionLimit: 10

})

app.get("/",(req, res)=>{

pool.getConnection((err, conn)=> {

if (err) throw err;

const sql = "select * from jd_user";

conn.query(sql, async(err, result)=>{

if (err) throw err;

await res.json(result);

conn.release();

})

})

})

app.post("/reg",(req, res)=>{

const {account, pwd, real_name} = req.body;//获取用户提交的数据

if(account && pwd && real_name){

pool.getConnection((err, conn)=>{

if(err) throw err;

const sql = "insert into jd_user values(null,?,?,?,now(),null,null,now(),null)";//写追加数据的sql变量可用"?"占位,追加的字段数量要与刚才查询的字段数量一致,否则会报错

conn.query(sql,[account, pwd, real_name],async(error,result)=>{//数组中放我们传入的变量会自动替换"?"

if(error) throw error;

await res.json({code: 200, msg: "添加成功"})

conn.release();

})

})

}

})

app.listen(3000,() => console.log("server on http://localhost:3000"))

再去index.html中写个post提交的方法:

Document

用户名:

密码:

真实姓名:

提交

$("button").click(function(){

const body = {};

body.account = $(".userName").val();

body.pwd = $(".userPwd").val();

body.real_name = $(".real_name").val();

$.ajax({

url: "http://localhost:3000/reg",

type: "post",

dataType: "json",

data: body,

success: function(data){}

})

})

npm run start启动项目,打开index.html输入提交的值

89c3656500c0

3.png

89c3656500c0

4.png

我们刚才的数据提交成功了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值