Nodejs操作MySQL之增删改查
Posted smouns_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs操作MySQL之增删改查相关的知识,希望对你有一定的参考价值。
本文章的前提是电脑上已经安装好nodejs和mysql,另外我还安装了Navicat(一个可视化的数据库管理工具,还蛮好用的,可以从官方下载)
对数据库进行操作,首先需要有一个数据库,下面就是数据库的相关信息
一: 在项目中操作数据库的步骤
-
安装操作
MySQL
数据库的第三方模块(mysql
) -
通过
mysql
模块连接到MySQL
数据库 -
通过
mysql
模块执行SQL
语句
1.1安装 mysql 模块
//安装mysql 为项目依赖包
npm i mysql
//或者
yarn add mysql
2.配置 mysql 模块
通过
createPool()
方法,建立与数据库连接
// 1. 导入 mysql 模块
var mysql = require('mysql')
// 导入express模块 (下载express 第三方包)
const express = require('express')
// 创建服务器
const app = express()
// 2. 建立与 mysql 数据库的连接
var db = mysql.createPool({
host: '127.0.0.1', // 数据库的 ip 地址
user: 'root', // 登录数据库的账号
password: 'root', // 登录数据库的密码
database: 'my01' // 指定要操作哪个数据库
})
//这里就是增删改查的地方啦
// 启动服务器
app.listen(80, () => {
console.log('http://127.0.0.1');
})
其中 creatPool中的参数 还有很多配置项...
配置参数实在有点多 ,感兴趣的小伙伴可自行测试哦~
host | 主机地址 (默认:localhost) |
user | 数据库用户名 |
password | 密码 |
port | 端口号(默认为3306) |
database | 数据库名 |
connectTimeout | 连接超时(默认:不限制;单位:毫秒) |
multipleStatements | 是否许一个query中有多个MySQL语句 (默认:false) |
localAddress | 此IP用于TCP连接(可选) |
charset | 连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写) |
socketPath | 连接到unix域路径,当使用 host 和port 时会被忽略 |
timezone | 时区(默认:'local') |
stringifyObjects | 是否序列化对象(默认:'false' ;与安全相关) |
typeCast | 是否将列值转化为本地javascript类型值 (默认:true) |
queryFormat | 自定义query语句格式化方法 |
supportBigNumbers | 数据库支持bigint或decimal类型列时,需要设此option为true (默认:false) |
bigNumberStrings | supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false) |
dateStrings | 强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScriptDate类型(默认:false) |
debug | 开启调试(默认:false) |
flags | 用于修改连接标志 |
ssl | 使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件 |
2.2测试 连接是否成功
通过
db.query
方法测试是否连接成功 (启动服务器)
// 测试mysql 模块能够正常运行 通过bd.query()
db.query('users', (err, data) => {
// mysql 模块如果错误,err 中会返回错误信息
if (err) return console.log(err.message);
// 能够成功的执行 SQL 语句
console.log(data)
})
3. 通过 mysql
模块执行 SQL
语句
3.1 使用 select 语句查询数据
select 列名称 from 表名称
// 挂载路由 发送get请求
app.get('/get', (req, res) => {
// sql语句 查询数据 select 列名称 from 表名称
db.query('select * from users', (err, data) => {
//err为对象时 表示 连接数据库失败 打印错误信息
if (err) return console.log(err.message);
//当数据库中数据data长度为0 时
if (data.length === 0) return console.log('数据库中没有数据');
// console.log(data);
res.send({
status: 0,
msg: '数据获取成功',
data
})
})
})
3.2 使用 insert into 向数据库中 添加数据
insert into 表名(字段1, 字段2) values ('值1', '值2')
insert into 表名 set 字段1 = 值1,字段2 = '值2';
// 配置中间件 `express.urlencoded`解析表单以post方式提交过来的数据
//(在所有路由之前设置)
app.use(express.urlencoded({
extended: false
}))
// 利用postman 传递的数据 名要与数据库中字段一致
// 向数据库中增加数据行 发送post请求
app.post('/dataAdd', (req, res) => {
//通过`req.body`来获取客户端提交过来的数据
const data = req.body
// 构建sql语句 ?表示占位符
const sql = 'insert into users set ?'
// data是数组形式 传递数据
db.query(sql, data, (err, data) => {
// 判断sql是否连接成功
if (err) return console.log(err.message);
//判断受影响的行数 (affectedRows) 看其值是不是1 不为1则写入失败
if (data.affectedRows !== 1) return console.log('写入数据失败');
// 如果成功 响应给客户端
res.send({
status: 0,
msg: '数据写入成功',
})
})
})
3.3 使用 update 修改指定数据
update 表名称 set 列名称=新值 where 列名称=某值
//根据id 修改数据库中的数据 post请求
app.post('/updata', (req, res) => {
// 接收客户端响应的数据
const data = req.body
// 构建sql语句
const sql = 'update users set ? where id=?'
// 调用bd.query 指定要执行的sql语句
db.query(sql, [data, data.id], (err, data) => {
// err为对象是 sql语句执行失败
if (err) return console.log(err.message);
// data.affectedRows !== 1 表示 没有被修改的行
if (data.affectedRows !== 1) return console.log('更新数据失败');
// 更新成功
res.send({
status: 0,
msg: '更新成功'
})
})
})
3.4 使用 delect 语句 删除指定数据
delect from 表名 where 列名=值
// 根据id删除 数据库中的数据
// 利用获取动态参数的方式 req.params
app.get('/delete/:id', (req, res) => {
// 获取客户端提交的id 参数
const {
id
} = req.params
//删除的sql语句 (通常不直接删除)
const sql ='delect from users where id=?'
// 调用db.query 指定要执行的sql语句
db.query(sql, id, (err, data) => {
if (err) return console.log(err.message);
if (data.affectedRows !== 1) return console.log('删除失败');
res.send({
status: 0,
msg: '删除成功'
})
})
})
// 删除功能 利用update 改变status值 来标记删除 status=0表示被禁用
//将删除的sql语句 替换为如下的语句 进行删除标记
const sql = 'update users set status=0 where id=?'
总结:以上就是利用 Nodejs操作MySQL之增删改查了
以上是关于Nodejs操作MySQL之增删改查的主要内容,如果未能解决你的问题,请参考以下文章