使用nodejs连接mySQL写接口全过程(增删改查)

 更新时间:2023年12月20日 10:02:25   作者:撒个辣酱  
这篇文章主要给大家介绍了关于使用nodejs连接mySQL写接口(增删改查)的相关资料,MySQL是一种常用的关系型数据库,它与Node.js的结合可以提供强大的数据存储和检索功能,需要的朋友可以参考下

前言

提示:请先建好mySQL数据库,本案例所用node版本为16.20.0:

提示:以下是本篇文章正文内容,下面案例可供参考

一、navicat建立链接

文件-新建链接-MySQL

默认端口为3306,连接名自定,密码为安装MySQL设置的数据库密码

二、建数据库表

打开或新建一个数据库,建立一张新表,设计好字段后加入两条测试数据

此处建立表名为userList(后面会用到)

字段:name, password, money, userId, sex, company, job

三、新建nodejs项目,建议直接使用Hbuilder编辑器快速创建

提示:请一定要确认nodejs版本是否与npm版本有冲突

打开Hbuilder,文件-新建-项目,选择Express项目

四、新建的项目在vscode打开后,进入app.js

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运行成功后再进行编写

代码示例:

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测试结果:删除刚刚修改的那一条

成功后刷新数据库表,刚刚那条数据发现已删除

总结

本人nodejs仅还在学习阶段,希望能对学习nodejs的小伙伴有所帮助!

到此这篇关于使用nodejs连接mySQL写接口(增删改查)的文章就介绍到这了,更多相关nodejs连接mySQL写接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目

    使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目

    这篇文章主要介绍了使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目的教程,自动化构建工具Grunt具有编译压缩单元测试等功能,十分强大,需要的朋友可以参考下
    2016-02-02
  • 使用 node.js 模仿 Apache 小部分功能

    使用 node.js 模仿 Apache 小部分功能

    这篇文章主要介绍了使用 node.js 模仿 Apache 小部分功能,文中给大家讲到了服务端渲染与客户端渲染之间的区别,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • nodejs如何获取时间戳与时间差

    nodejs如何获取时间戳与时间差

    本文详细介绍了nodejs获取时间戳与时间差的多种方法,对平时nodejs的使用很有帮助,下面一起来看看吧。
    2016-08-08
  • 开箱即用的Node.js+Mysql模块封装实现详解

    开箱即用的Node.js+Mysql模块封装实现详解

    这篇文章主要为大家介绍了开箱即用的Node.js+Mysql模块封装实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 深入理解Nodejs Global 模块

    深入理解Nodejs Global 模块

    本篇文章主要介绍了深入理解Nodejs Global 模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • express.js中间件说明详解

    express.js中间件说明详解

    这篇文章主要介绍了express.js中间件说明详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Node.js数据库钩子的使用

    Node.js数据库钩子的使用

    本文主要介绍了Node.js数据库钩子的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 使用node.js实现接口步骤详细记录

    使用node.js实现接口步骤详细记录

    这篇文章主要给大家介绍了关于使用node.js实现接口步骤的相关资料,对于刚开始不会node写接口和调用接口,可以通过这个清晰的初步了解到整个过程,下面需要的朋友可以参考下
    2023-03-03
  • nodejs16.15.0版本如何解决node-sass和sass-loader版本冲突问题

    nodejs16.15.0版本如何解决node-sass和sass-loader版本冲突问题

    这篇文章主要介绍了nodejs16.15.0版本如何解决node-sass和sass-loader版本冲突问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Node.js的非阻塞I/O、异步与事件驱动介绍

    Node.js的非阻塞I/O、异步与事件驱动介绍

    这篇文章介绍了Node.js的非阻塞I/O、异步与事件驱动,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论