国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

node基于async/await對mysql進行封裝

2024-05-06 15:37:44
字體:
供稿:網(wǎng)友

前言

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

原理

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

代碼

'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);      });    });  });};//返回一個對象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 );      });    });  });};//返回單個查詢結(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);})();            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 安远县| 泌阳县| 凌源市| 徐闻县| 海丰县| 水城县| 安福县| 孟津县| 大厂| 长宁县| 乡宁县| 宁明县| 浙江省| 木里| 南通市| 资源县| 蓬溪县| 芦山县| 信宜市| 西藏| 平阴县| 仪征市| 南郑县| 城口县| 临沧市| 定南县| 梓潼县| 稷山县| 行唐县| 海门市| 禹州市| 大竹县| 普宁市| 余庆县| 南京市| 淮安市| 桂阳县| 合水县| 南皮县| 岳阳市| 天水市|