当前位置: 首页 > Web前端 > HTML

前端自己写接口,nuxt3单梭连接mysql

时间:2023-03-28 17:03:12 HTML

由于项目需要,我根据前端的参数连接不同的数据库获取数据。我是一个前端,但是没有人给我写界面。最近也在看nuxt3,所以用了一段时间nuxt3。公司内部使用的小项目,有问题慢慢改正,顺便学习。安装安装mysql2pnpm我简单封装了mysql2代码,根据类型获取数据库连接字符串,创建连接池,用map缓存importmysqlfrom"mysql2/promise";//缓存连接池constpoolMap=新地图<字符串,mysql。Pool>();导出异步函数useMysql(type:string):Promise{//获取数据库连接字符串consturi=getServerMysqlUri(type);//从缓存中获取连接池if(poolMap.has(type)){constpool=poolMap.get(type);返回池;}try{constpool=awaitmysql.createPool(uri);//缓存poolMap.set(type,pool);返回池;}catch(error){console.error("[错误]:mysql连接错误。");返回;}}看了网上其他人写的,发现他们有自己封装query原查询的方法,我也模仿了一下,大致是错误拦截最多的一种。查询完成后,释放连接getConnection();//查询awaitconn.query(sql).then((result)=>{resolve(result);//释放连接conn.release();}).catch((err)=>{reject(err);});}赶上(错误){拒绝(错误);}});}不知道在mysql2中是怎么做到的,需要释放连接吗?大概是看了网上别人写的事件,听取了请求。发现释放后的conn.threadId是一样的,不释放时的conn.threadId不一样。它可以在发布后重复使用。db.on("acquire",function(connection){console.log("Connection%dacquired",connection.threadId);});db.on("release",function(connection){console.log("Connection%dreleased",connection.threadId);});//在查询方法中获取连接后打印constconn=awaitdb.getConnection();console.log("Connection%dconnection",conn.threadId);结果如图