最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

node基于async/await对mysql进行封装

来源:动视网 责编:小采 时间:2020-11-27 21:54:53
文档

node基于async/await对mysql进行封装

node基于async/await对mysql进行封装:前言 node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果。但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一次操作封装,让查询更加方便。(node版本需>=7.0)。 原理 简
推荐度:
导读node基于async/await对mysql进行封装:前言 node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果。但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一次操作封装,让查询更加方便。(node版本需>=7.0)。 原理 简


前言

node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果。但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一次操作封装,让查询更加方便。(node版本需>=7.0)。

原理

简单来说,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进行封装:前言 node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果。但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一次操作封装,让查询更加方便。(node版本需>=7.0)。 原理 简
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top