日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

node封装mysql模块

發布時間:2025/7/14 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。