node封装mysql模块
生活随笔
收集整理的這篇文章主要介紹了
node封装mysql模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 local = true var pool// 創建連接池 if (local) {pool = mysql.createPool({connectionLimit: 50,host: 'localhost',user: 'root',password: 'root',database: 'crawl',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 }/*連接mysql*/ function connectToMysql() {var connection = mysql.createConnection({host: '',user: '',password: '',database: ''});connection.connect();//查詢connection.query('SELECT * FROM user;', function (err, rows, fields) {if (err) throw err;console.log('The solution is: ', rows[0]);});//關閉連接 connection.end(); }?
轉載于:https://www.cnblogs.com/cosyer/p/7763602.html
總結
以上是生活随笔為你收集整理的node封装mysql模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言程序设计第三次作业——选择结构(1
- 下一篇: 手写AngularJS脏检查机制