小编给大家分享一下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进行封装的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。