Node.js 16 连接 MySQL 实现增删改查接口完整教程
本文基于Node.js 16.20.0版本,详细演示如何使用Express框架连接MySQL数据库并开发RESTful接口。内容涵盖从Navicat建立数据库连接、创建数据表,到使用HBuilder和VSCode搭建项目环境,以及通过mysql模块实现用户列表查询、添加、修改和删除数据的具体代码与Postman测试结果。
前言
注意:在开始之前,请确保已创建好MySQL数据库。本教程使用的Node.js版本为16.20.0。
以下是本文的主要内容,提供的案例可供参考。
一、使用Navicat建立数据库连接
点击菜单栏的文件,选择新建链接,类型选择MySQL。
默认端口号为3306,连接名称可自定义,密码需填写安装MySQL时设置的数据库密码。

二、创建数据库与数据表
打开或新建一个数据库,在其中创建一张新表。设计好字段结构后,插入两条测试数据。
本例中建立的表名为userList(后续代码中将使用此名称)。
字段包括:name, password, money, userId, sex, company, job。

三、新建Node.js项目,建议使用HBuilder编辑器快速创建
注意:请务必确认Node.js版本与npm版本之间是否存在兼容性问题。
打开HBuilder,依次点击文件-新建-项目,选择Express项目类型。

四、在VSCode中打开新建项目并配置启动文件
1、在项目目录中编写启动服务的代码。
注意:启动代码必须写在var app = express();之后,否则会导致报错。
本案例将服务启动端口设置为2323。
app.listen(2323, () => console.log('服务已启动在2323端口'))
2、在项目文件夹右键,选择“在集成终端中打开”,输入命令node app.js以启动服务。
启动成功后,终端会打印出预设的提示信息,表明服务已成功运行。
此时,可以编写一个简单的GET接口来测试服务器是否正常工作。
app.get('/', (req, res) => {
res.json('helloWord')
})
添加该代码后,访问localhost:2323或127.0.0.1:2323,页面将返回helloWord。

这证明服务器运行正常。
五、建立MySQL数据库连接
由于HBuilder生成的Express项目默认未安装MySQL插件,因此需要在终端手动下载。
直接在终端执行命令npm install mysql即可安装。
安装成功后,在router文件夹下的index.js中建立数据库连接,并在此处编写具体的接口代码。
const mysql = require('mysql');
// 链接数据库
const conn = mysql.createConnection({
user:'root', //用户名使用前面数据库建立链接里的用户名
password:'******', //密码
port:3306,
host:'localhost', //主机(默认都是local host)
database:'node' //数据库名注意!!!不是你新建连接起的连接名
})
// 测试连接
conn.connect(err=>{
console.log(err,'连接成功');
})
启动项目后,如果终端返回null,表示连接成功,即数据库连接建立成功。
六、实现简单列表查询
注意:此处开始涉及SQL语句,请确保在Navicat中测试SQL无误后再进行代码编写。
参考代码如下。
文件为index.js。
// 获取用户列表
router.get('/getList', (req, res, next) => {
// sql语句查询列表所有数据 SELECT * FROM 你数据库的表名,我这里是userList
let sql = "SELECT * FROM userlist";
conn.query(sql, (err, r) => {
res.json({code: 200, data: r, msg: '成功'})
})
});
Postman测试结果如下。

七、实现数据添加功能
参考代码如下。
文件为index.js。
// 在index.js同目录下创建新的interface.js文件,并在index.js最上面引入文件interface.js
var interface = require('./interface')
// 添加用户接口
router.post('/addUser', (req, res) => {
interface.addUser(conn, req, res)
})
interface.js代码示例:此处设置了用户名和密码为必填参数,否则接口将返回失败。
此处使用了随机生成ID的函数randomId。
// 添加用户
const addUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.name == '') {
ret.code = 501
ret.data = null
ret.msg = '请传递用户名'
res.json(ret)
return
} else if (params.password == '') {
ret.code = 501
ret.data = null
ret.msg = '请设置用户密码'
res.json(ret)
return
} else {
conn.query(`INSERT INTO userlist(name,password,money,userid,sex,company,job)VALUES(
'${params.name}','${params.password}','${params.money}','${randomId()}','${params.sex}','${params.company}','${params.job}')`,
function (error, results, fields) {
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '请传递正确的参数'
} else {
ret.code = 200
ret.data = null
ret.msg = '添加成功'
}
res.json(ret)
})
}
}
const randomId = function uuid(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
//最后exports
exports.addUser = addUser
Postman测试结果如下。

此时查看数据库表,会发现多出一条刚刚添加的数据记录。

八、实现数据修改功能
index.js代码示例如下。
// 修改用户接口
router.post('/updateUser', (req, res) => {
interface.updateUser(conn, req, res)
})
interface.js代码示例:与添加接口相比,修改接口多传递了一个userId参数。
// 修改用户
const updateUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.name == '') {
ret.code = 501
ret.data = null
ret.msg = '请传递用户名'
res.json(ret)
return
} else if (params.password == '') {
ret.code = 501
ret.data = null
ret.msg = '请设置用户密码'
res.json(ret)
return
} else if (params.userId == '') {
ret.code = 501
ret.data = null
ret.msg = '请传递用户id'
res.json(ret)
return
} else {
conn.query(`UPDATE userlist SET
name="${params.name}",
password="${params.password}",
money="${params.money}",
sex="${params.sex}",
company="${params.company}",
job="${params.job}" WHERE userId="${params.userId}";`,
function (error, results, fields) {
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '请传递正确的参数'
} else {
ret.code = 200
ret.data = null
ret.msg = '修改成功'
}
res.json(ret)
})
}
}
//最后exports
exports.updateUser = updateUser
Postman测试结果如下。

修改成功后,刷新数据库表,对应userId的数据记录将发生更改。

九、实现数据删除功能
index.js代码示例如下。
// 删除用户接口
router.post('/deleteUser', (req, res) => {
interface.deleteUser(conn, req, res)
})
interface.js代码示例:参数仅传递userId。
// 删除用户
const deleteUser = (conn, req, res) => {
const params = req.body
// console.log(params);
const ret = {}
if (params.userId == '') {
ret.code = 501
ret.data = null
ret.msg = '请传递用户id'
res.json(ret)
return
} else {
conn.query(`DELETE FROM userlist WHERE userId="${params.userId}";`,
function (error, results, fields) {
// console.log(error);
if (error) {
ret.code = 500
ret.data = null
ret.msg = error.sqlMessage
return
}
if (results.length === 0) {
ret.code = 501
ret.message = '请传递正确的参数'
} else {
ret.code = 200
ret.data = null
ret.msg = '删除成功'
}
res.json(ret)
})
}
}
//最后exports
exports.deleteUser = deleteUser
Postman测试结果如下:删除了刚刚修改的那一条数据。

成功后刷新数据库表,可以看到刚才那条数据已被删除。

总结
作者目前仍处于Node.js学习阶段,希望本文能对正在学习Node.js的开发者有所帮助。
到此这篇关于使用Node.js连接MySQL编写接口(增删改查)的文章就介绍到这了,更多相关Node.js连接MySQL编写接口的内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
Java和JavaScript的应用场景分工:后端企业级开发与Web前端交互
2026-11-05 15:57:34
除了浏览器和Node.js,还有哪些轻量级Js脚本运行工具?
2026-11-04 17:38:24
无需后端:用JavaScript实现简单网站的本地数据存储
2026-11-03 23:03:30
Node.js 下载慢或官网打不开怎么办
2026-11-03 18:19:37
JS解析大体积Excel文件内存溢出怎么办
2026-11-03 18:19:37
