nodejs mysql пул соединений продолжает инициализироваться после каждого оператора require - PullRequest
0 голосов
/ 27 января 2020

У меня есть несколько модулей, для которых требуется мой пользовательский модуль Promisified MySQL. js. Я пытаюсь использовать пул соединений из библиотеки NodeJS mysql.

Я попытался установить переменную с именем connectionPool для хранения инициализированного пула. Однако, похоже, что для каждого модуля, который импортирует мой файл Promisified MySQL. js, он пытается инициализировать новый экземпляр пула.

Я хочу создать ТОЛЬКО один экземпляр пула, который содержится внутри Promisified MySQL. js

Почему мой connectionPool не поддерживает свое состояние должным образом?

const mysql = require('mysql');
let connectionPool = null;


const initializePool = ()=>{
  if(isLiveEnv()){
    connectionPool = createLivePool();
  }
  else if(isDevEnv()){
    connectionPool = createDevPool();

  }
}



if(connectionPool === null){
  console.log(connectionPool === null);
  console.log('init pool!');
  initializePool();
}


let query = (sql, args) =>{
    return new Promise((resolve,reject) => {
      getConnection().then(con => {
        con.query(sql,args,(err,result) => {
          if(err) {
            con.release();
            reject(err);
          }
          else{
            con.release();
            resolve(result);
          }
        })
      })
      .catch(err =>{
        reject(err);
      })
    })
} // end query.

Мой экспорт выглядит следующим образом:

module.exports = {
  query:query
}

Где запрос получает соединение из пула, выполняет запрос и освобождает соединение.

Если у меня есть module1. js и module2 . js require ('./ Promisified. js'), тогда он фактически создает два пула, хотя после создания первого я устанавливаю connectPool быть ненулевым;

...