当前位置:Gxlcms > 数据库问题 > node封装mysql模块

node封装mysql模块

时间:2021-07-01 10:21:17 帮助过:25人阅读

‘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();
}

 

node封装mysql模块

标签:导出   rom   node   UI   nec   null   实现   tip   cat   

人气教程排行