中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

node基于async/await對mysql進行封裝的示例分析

發布時間:2021-08-18 09:45:28 來源:億速云 閱讀:167 作者:小新 欄目:web開發

小編給大家分享一下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進行封裝的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华宁县| 全南县| 温州市| 民和| 宿州市| 宜宾市| 巧家县| 祁连县| 浦北县| 深圳市| 尚志市| 潜江市| 应用必备| 蒙自县| 赞皇县| 城固县| 内乡县| 巩留县| 抚顺市| 东兰县| 姚安县| 达州市| 清原| 中西区| 山丹县| 彩票| 元朗区| 囊谦县| 福海县| 韩城市| 通海县| 郁南县| 金溪县| 唐山市| 正安县| 天台县| 安吉县| 兴隆县| 林州市| 沾益县| 前郭尔|