-
MSSQL POOL을 Express 환경에서 사용하기NodeJS 2021. 2. 14. 17:46728x90
MSSQL POOL을 Express 환경에서 사용하기
node-mssql의 예제를 참고로 다음과 같이 사용하고 있었습니다.
const sql = require('mssql') // async/await style: const pool1 = new sql.ConnectionPool(config); const pool1Connect = pool1.connect(); pool1.on('error', err => { // ... error handler }) async function messageHandler() { await pool1Connect; // ensures that the pool has been created try { const request = pool1.request(); // or: new sql.Request(pool1) const result = await request.query('select 1 as number') console.dir(result) return result; } catch (err) { console.error('SQL error', err); } }
문제는 간간히 - Error: Already connecting to database 와 같은 오류가 발생했습니다.
이유로 매번 요청시마다, connect를 연결하려고 하였기 때문이었습니다.
해결 방법으로는 How can I use a single mssql connection pool across several routes in an Express 4 web application?에서 제공하는
db.js
를 만들어서 사용하면 됩니다.const sql = require("mssql"); const config = { user: process.env.DB_MSSQL_USER, password: process.env.DB_MSSQL_PASSWORD, server: process.env.DB_MSSQL_IP, // You can use 'localhost\\instance' to connect to named instance database: process.env.DB_MSSQL_DB, options: { encrypt: true, // Use this if you're on Windows Azure }, pool: { max: 5, min: 1, idleTimeoutMillis: 30000, }, }; const poolPromise = new sql.ConnectionPool(config) .connect() .then((pool) => { console.log("Connected to MSSQL"); return pool; }) .catch((err) => console.log("Database Connection Failed! Bad Config: ", err)); module.exports = { sql, poolPromise, };
오늘의 삽질도 끝~
참고자료
728x90'NodeJS' 카테고리의 다른 글
[개인프로젝트] Workplace Export (0) 2021.02.20 [개인프로젝트]md5-lite (0) 2021.02.18 NAVER CLOUD PLATFORM API를 Typescript 기반에서 사용하기 (0) 2021.02.13 Nestjs tutorial (0) 2021.01.11 typeorm에서 merge 예제 (0) 2021.01.11