node基于async/await对mysql进行封装的示例分析
小编给大家分享一下node基于async/await对MySQL进行封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联专注于淮滨网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供淮滨营销型网站建设,淮滨网站制作、淮滨网页设计、淮滨网站官网定制、小程序制作服务,打造淮滨网络公司原创品牌,更为您提供淮滨网站排名全网营销落地服务。
原理
简单来说,async/await的实现原理是基于promise,根据promise的状态来判断是否真正返回,因此我们可以在mysql真正查询到结果后将promise状态切换为resolve,返回结果。如出现错误通过reject返回错误信息,reject需要用try/catch进行捕获。
代码
'use strict'; const mysql = require( 'mysql' ); var pool = mysql.createPool( { connectionLimit : 50, host : '', user : '', password : '', database : '', multipleStatements : true //是否允许执行多条sql语句 } ); //将结果已对象数组返回 var row=( sql , ...params )=>{ return new Promise(function(resolve,reject){ pool.getConnection(function(err,connection){ if(err){ reject(err); return; } connection.query( sql , params , function(error,res){ connection.release(); if(error){ reject(error); return; } resolve(res); }); }); }); }; //返回一个对象 var first=( sql , ...params )=>{ return new Promise(function(resolve,reject){ pool.getConnection(function(err,connection){ if(err){ reject(err); return; } connection.query( sql , params , function(error,res){ connection.release(); if(error){ reject(error); return; } resolve( res[0] || null ); }); }); }); }; //返回单个查询结果 var single=(sql , ...params )=>{ return new Promise(function(resolve,reject){ pool.getConnection(function(err,connection){ if(err){ reject(err); return; } connection.query( sql , params , function(error,res){ connection.release(); if(error){ reject( error ); return; } for( let i in res[0] ) { resolve( res[0][i] || null ); return; } resolve(null); }); }); }); } //执行代码,返回执行结果 var execute=(sql , ...params )=>{ return new Promise(function(resolve,reject){ pool.getConnection(function(err,connection){ if(err){ reject(err); return; } connection.query( sql , params , function(error,res){ connection.release(); if(error){ reject(error); return; } resolve( res ); }); }); }); } //模块导出 module.exports = { ROW : row , FIRST : first , SINGLE : single , EXECUTE : execute }
使用示例
const mysql = require('./mysql.js'); (async ()=>{ let s = await mysql.row(sql,params); console.log(s); })();
以上是“node基于async/await对mysql进行封装的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
文章名称:node基于async/await对mysql进行封装的示例分析
分享URL:http://scyanting.com/article/gpciei.html