123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- const mysql = require('mysql')
- const config = require('./config.js')
- var pool = undefined;
- function initPool() {
- pool = mysql.createPool({
- host: config.db.host,
- port: config.db.port,
- user: config.db.user,
- password: config.db.password,
- database: config.db.database || '',
- charset: 'utf8',
- connectionLimit: 10
- });
- }
- function getTransactionConnection() {
- return new Promise((resolve, reject) => {
- if (pool == undefined) {
- reject('db not init');
- }
- pool.getConnection((err, connection) => {
- if (err) {
- reject(err);
- } else {
- connection.beginTransaction((err) => {
- if (err) {
- reject(err);
- } else {
- resolve(connection);
- }
- });
- }
- });
- });
- }
- function query(connection, sql, datas) {
- return new Promise((resolve, reject) => {
- connection.query(sql, datas, (err, results, fields) => {
- if (err) {
- reject(err);
- } else {
- resolve(results, fields);
- }
- });
- });
- }
- module.exports.init = function () {
- if (pool != undefined) {
- pool.end();
- pool = undefined;
- }
- initPool();
- }
- module.exports.close = function(){
- if(pool!=undefined){
- pool.end();
- pool = undefined;
- }
- }
- module.exports.query = function (sql, datas) {
- return new Promise((resolve, reject) => {
- pool.query(sql, datas, (err, results, fields) => {
- if (err) {
- reject(err);
- } else {
- resolve(results, fields);
- }
- });
- });
- }
- module.exports.batchQuery = function (sql, datas) {
- return new Promise((resolve, reject) => {
- getTransactionConnection().then(connection => {
- let results = [];
- for (var i = 0; i < datas.length; i++) {
- results.push(query(connection, sql, datas[i]));
- }
- Promise.all(results).then(() => {
- connection.commit(err => {
- if (err) {
- connection.rollback(() => {
- reject(err);
- });
- } else {
- connection.release();
- resolve(datas.length);
- }
- });
- }).catch(err => {
- connection.rollback(() => {
- reject(err);
- })
- });
- }).catch(err => {
- reject(err);
- });
- });
- }
|