Node.js 16 连接 MySQL 实现增删改查接口完整教程

作者:终端旅客

时间:2026-10-31

浏览:653

本文基于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编写接口的内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章