麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

node基于async/await對mysql進(jìn)行封裝

2019-11-19 11:18:26
字體:
供稿:網(wǎng)友

前言

node是基于異步的,因此在進(jìn)行數(shù)據(jù)庫查詢操作的通常是通過回調(diào)來操作查詢結(jié)果。但是在有了es7的async/await,基本不再需要回調(diào)了,所以本篇是基于async/await對mysql進(jìn)行一次操作封裝,讓查詢更加方便。(node版本需>=7.0)。

原理

簡單來說,async/await的實(shí)現(xiàn)原理是基于promise,根據(jù)promise的狀態(tài)來判斷是否真正返回,因此我們可以在mysql真正查詢到結(jié)果后將promise狀態(tài)切換為resolve,返回結(jié)果。如出現(xiàn)錯(cuò)誤通過reject返回錯(cuò)誤信息,reject需要用try/catch進(jìn)行捕獲。

代碼

'use strict';const mysql = require( 'mysql' );var pool = mysql.createPool( {  connectionLimit : 50,  host      : '',  user      : '',  password  : '',  database   : '',  multipleStatements : true //是否允許執(zhí)行多條sql語句} );//將結(jié)果已對象數(shù)組返回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);      });    });  });};//返回一個(gè)對象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 );      });    });  });};//返回單個(gè)查詢結(jié)果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);      });    });  });}//執(zhí)行代碼,返回執(zhí)行結(jié)果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 );      });    });  });}//模塊導(dǎo)出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);})();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品成人免费一区久久羞羞 | 韩日黄色片 | 91久久另类重口变态 | 黄色网址在线免费 | 91成人免费在线观看 | xxxⅹ96日本护士hd | 91麻豆蜜桃一区二区三区 | 久久色在线 | 91久久极品少妇韩国 | 天堂成人国产精品一区 | 在线成人一区 | 国产一级毛片高清视频 | 中文字幕在线免费观看电影 | 亚洲欧美国产高清 | www.国产.com| 黄网在线| 国产精品视频导航 | 一级α片免费看 | 亚州综合图片 | 国产精品久久久久久久hd | 99影视在线视频免费观看 | 国产精品99久久久久久久女警 | 亚洲第一视频 | tube69xxxxxhd | 国产毛片毛片 | 久久久免费观看完整版 | 国产成人精品日本亚洲语音 | 九九热精品视频在线免费观看 | 亚洲最大的成人网 | 色视频在线 | 夏目友人帐第七季第一集 | 视频二区国产 | 91九色视频在线播放 | 性欧美大战久久久久久久免费观看 | 国产精品久久久久久久久久东京 | 99欧美精品 | 中文字幕在线永久 | 91成人免费视频 | 欧产日产国产精品99 | 久色一区 | 日日做夜夜操 |