Как использовать одно соединение пула Mysql во многих файлах в приложении NodeJS Express

Я ломал голову над этим. Я хотел знать, существует ли эффективный способ создания одного соединения Mysql и совместного использования его между различными модулями в приложении, обслуживаемом Express. Пока что у меня есть следующий код вверху всех моих JS-файлов, для которых требуется своего рода подключение к базе данных:

const db = require('mysql2')
pool = db.createPool(<config details>)

// Below
pool.execute(.. ) // etc

Я чувствую, что это перебор. Есть ли способ создать одно соединение, скажем, в экспресс-приложении? Или отдельный файл, а затем получать это соединение всякий раз, когда мне это нужно? Я думаю примерно так:

// In db.js
const db = require('mysql2')
module.exports = db.createPool(<config details>)

// In file1.js that needs a db connection
let db = require('./db')
db.execute(...)

// In file2.js
let db = require('./db')
db.execute(...)

И так далее. Спасибо за помощь, ребята!


person realnsleo    schedule 18.07.2018    source источник
comment
Вы пробовали это делать?   -  person Paul    schedule 18.07.2018
comment
@ Пол На самом деле, я не знаю; Д, а? Дай мне попробовать.   -  person realnsleo    schedule 18.07.2018
comment
Ага; должно работать так, как вы это описали, ваша интуиция сильна.   -  person Paul    schedule 18.07.2018
comment
Хорошо, я был бы черт возьми! Оно работает! :) Большой!   -  person realnsleo    schedule 18.07.2018
comment
добро пожаловать (вроде; вы уже знали, как это сделать). Когда сможете, ответьте на свой вопрос и возьмите на себя ответственность. ;)   -  person Paul    schedule 18.07.2018


Ответы (1)


Что ж, разобрался благодаря @paul. Я создал файл dB, в который я поместил соединение MySQL, и экспортировал его, чтобы другие файлы, которым требуется соединение, могли просто потребовать его.

// dB.sql
let MySQL = require(‘mysql2’)
module.exports = MySQL.createPool(require(‘./config’)

Таким образом, любой файл, который включает указанный выше файл, будет иметь доступ к соединению.

// File that needs pool instance
let pool = require(‘path to dB file’)

Надеюсь, это поможет всем, кто ищет подобное решение.

Ваше здоровье!

person realnsleo    schedule 18.07.2018