当前位置: 首页 > 后端技术 > Node.js

在Node.js项目中操作MySQL

时间:2023-04-03 18:09:00 Node.js

本文是一篇使用npm模块mysql操作MySQL数据库的基础教程。不涉及MySQL的安装配置。如果电脑上没有安装MySQL,建议安装WAMP、XAMPP等集成环境。本文也使用轻量级的Node.js框架Koa搭建web程序,以通过前端浏览器请求来模拟项目场景。无需掌握Koa框架的语法,也可以轻松阅读本文。初始化项目创建项目目录并使用npminit初始化项目后,执行如下操作:安装依赖npminstallmysqlkoakoa-routercreateindex.js//index.jsconstkoa=require('koa');constRouter=require('koa-router');constmysql=require('mysql');constapp=newKoa();constrouter=newRouter();constconnection=mysql.createConnection({host:'localhost',//填写你的mysql主机用户:'root',//填写你的mysql用户名密码:'123456'//填写你的mysql密码})connection.connect(err=>{if(err)throwerr;console.log('mysql连接成功!');})router.get('/',ctx=>{ctx.body='访问索引';})app.use(router.routes());app.listen(3000);在shell中执行nodeindex.js,mysql连接成功!shell中打印出来,说明MySQL数据库连接成功。打开浏览器,访问localhost:3000,当屏幕显示Visitindex时,表名项目初始化成功。数据库操作创建数据库在访问/createdb时,创建mysqlkoa数据库,代码如下:router.get('/createdb',ctx=>{returnnewPromise(resolve=>{constsql=`CREATEDATABASEmysqlkoa`;connection.query(sql,(err)=>{if(err)throwerr;ctx.body={code:200,msg:`创建数据库mysqlkoa成功!`}resolve();});})})重新执行nodeindex.js,使用浏览器访问localhost:3000/createdb创建数据表。为了方便,我们在连接的时候直接使用刚才创建的数据库。我们需要在mysql.createConnection中添加database:mysqlkoa配置项。constconnection=mysql.createConnection({host:'localhost',user:'root',password:'123456',database:'mysqlkoa'//addthiscolumn})在访问/createtable时,我们创建一个数据表fe_frame,该表用于保存前端框架的数据:router.get('/createtable',ctx=>{returnnewPromise(resolve=>{constsql=`CREATETABLEfe_frame(idINT(11)AUTO_INCREMENT主键,名称VARCHAR(255),作者VARCHAR(255))`;connection.query(sql,(err,results,filelds)=>{if(err)throwerr;ctx.body={code:200,msg:`创建fe_frame表成功!`}resolve();})})})重新执行nodeindex.js,使用浏览器访问localhost:3000/createtable插入数据,插入单条数据。访问/insert时,用于插入单条数据:router.get('/insert',ctx=>{returnnewPromise(resolve=>{constsql=`INSERTINTOfe_frame(name,author)VALUES('vue','Evan')`;connection.query(sql,(err)=>{if(err)throwerr;ctx.body={cde:200,msg:`将数据插入fe_frame成功!`}resolve();})})})重新执行nodeindex.js,用浏览器访问localhost:3000/insert插入多条数据。访问/insertmulti时,用于插入多条数据:router。get('/insertmulti',ctx=>{returnnewPromise(resolve=>{constsql=`INSERTINTOfe_frame(name,author)VALUES?`;constvalues=[['React','Facebook'],['Angular','Google'],['jQuery','JohnResig']];connection.query(sql,[values],(err,result)=>{if(err)throwerr;ctx.body={code:200,msg:`insert${result.affectedRows}datatofe_framesuccess!`}resolve();})})})重新执行nodeindex.js,使用浏览器访问localhost:3000/insertmultiuse访问phpMyAdmin时可以看到mysqlkoa表删除数据如下。访问/delete时,删除对应的行我们使用请求参数名称指定删除哪个框架,在服务端使用ctx.query.name获取。代码如下:router.get('/delete',ctx=>{returnnewPromise(resolve=>{constname=ctx.query.name;constsql=`DELETEFROMfe_frameWHEREname='${name}'`;connection.query(sql,(err,result)=>{if(err)throwerr;ctx.body={code:200,msg:`从fe_frame成功删除${result.affectedRows}数据!`};resolve();})})})重新执行nodeindex.js,用浏览器访问http://localhost:3000/delete?name=jQuery修改数据访问/update时,作者updatevue框架名为EvanYou,代码如下:router.get('/update',ctx=>{returnnewPromise(resolve=>{constsql=`UPDATEfe_frameSETauthor='EvanYou'WHERENAME='vue'`;connection.query(sql,(err,result)=>{if(err)throwerr;ctx.body={code:200,msg:`update${result.affectedRows}来自fe_frame的数据成功!`};resolve();})})})重新执行nodeindex.js,使用浏览器访问http://localhost:3000/update查找数据时访问/select时,获取请求参数中满足framename条件的item,代码如下:router.get('/select',ctx=>{returnnewPromise(resolve=>{letname=ctx.query.name;constsql=`SELECT*FROMfe_frameWHEREname='${name}'`;connection.query(sql,(err,result)=>{if(err)throwerr;ctx.body={code:200,data:result}resolve();})})})重新执行nodeindex.js,用浏览器访问http://localhost:3000/select?name=vuemysql文档地址:https://www.npmjs.com/包...