개인적으로 공부하면서 기록하는 공간으로
잘못된 정보는 댓글을 통해 알려주시면 감사하겠습니다 :-)
▪ ▪ ▪ ▪ ▪
저는 DB 작업 할 때 주로 프로시저를 사용하곤 해요.
처음 연동 할 때 DB 작업을 쉽게 할 수 있도록 도와주는 ORM 라이브러리인 Sequelize를 통해 시도해 보았지만,
procedure의 output 값을 받는데 한계를 느껴 mssql 라이브러리를 사용하게 되었습니다.
node.js에서 mssql 연동하는 방법을 정리해보았습니다.
( 혹시 Sequelize을 사용해서 procedure output 값 받는 방법 아시는 분은 공유 부탁드려요ෆ )
라이브러리 설치
node.js에서 MSSQL을 사용하기 위해서는 mssql 라이브러리를 설치해야한다.
npm i mssql
...
"dependencies": {
"dotenv": "^16.0.0",
"express": "^4.17.2",
"http-server": "^14.1.0",
"mssql": "^8.0.2",
"sequelize": "^6.16.1",
"sequelize-cli": "^6.4.1",
"tedious": "^14.3.0"
},
...
package.json 파일에 "mssql" : mssql 버전이 생겼다면 정상적으로 설치가 된 것이다.
✔ 공식사이트
https://www.npmjs.com/package/mssql
MSSQL 연동
DB 연동을 하기 위해 작성한 파일들은 다음과 같다.
dotenv 파일
• 서버 정보, API 정보, DB 정보 등의 환경변수를 .env파일에 저장하고 process.env로 로드하는 의존성 모듈이다.
• 해당 정보들은 보안이 이루어져야하는 정보들이므로 환경변수 파일을 외부에 만들어 접근할 수 있게하고, 개발 초기단계에서 세팅하기를 권고한다.
dotenv 설치
npm i dotenv
.env 작성
• .env 파일은 프로젝트 루트 경로에 위치해야한다.
• "키=값" 형태로 작성하며, ; (세미콜론)은 사용하지 않는다.
DB_DEV_SERVER='[연결할 DB서버 정보]'
DB_DEV_PORT=[연결할DB서버포트]
DB_DEV_DATEBASE='[DB명]'
DB_DEV_USERNAME='[DB 계정 ID]'
DB_DEV_PASSOWRD='[DB 계정 PW]'
config 파일 (/src/config/config.js)
• config 객체에서 .env 파일에서 작성한 환경변수를 불러와 MSSQL 접속 정보를 저장한다.
• .env를 사용하기 위해 dotenv 라이브러리를 import 하고, dotenv.config()를 통해 .env 파일을 불러온다.
import dotenv from 'dotenv';
dotenv.config();
export const config = {
port: process.env.PORT,
dbconfig: {
server: process.env.DB_DEV_SERVER,
port: parseInt(process.env.DB_DEV_PORT),
pool: {
max: 5,
min: 1,
idleTimeoutMillis: 30000,
},
options: {
encrypt: false,
datebase: process.env.DB_DEV_DATEBASE,
trustServerCertificate: true,
},
authentication: {
type: 'default',
options: {
userName: process.env.DB_DEV_USERNAME,
password: process.env.DB_DEV_PASSOWRD,
},
},
},
};
Connection Pool 객체 생성 (/src/config/server.js)
** Connection Pool 이란?
- 데이터베이스 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다.
- 서버 실행 시 Connection Pool 객체에 저장하여 데이터베이스 작업 필요 시 해당 객체를 사용하여 재연결을 할 필요가 없다.
import sql from 'mssql';
import { config } from './config.js';
const connPool = new sql.ConnectionPool(config.dbconfig)
.connect()
.then((pool) => {
console.log('DB연결 성공');
return pool;
})
.catch((err) => {
console.log('err ', err);
});
export {
sql,
connPool
}
DB 연결 확인하기 (/src/app.js)
• 데이터베이스가 정상적으로 연동되었는지 확인하기 위하여, connection을 실행시킨다.
• 해당 과정은 DB연결을 확인하기 위한 과정으로 API 개발 시 service 로직에서 불러와서 사용한다.
import express from 'express';
import { connPool } from './config/server.js';
const app = express();
app.set('port', process.env.PORT || 3000);
connPool;
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기중');
});
node.js 서버 실행 후, 정상적으로 연결이 되었다면 터미널 창에 "DB연결 성공"이 출력된다.
Reference
✔ https://velog.io/@reveloper-1311/DB-Node.js에서-환경변수-사용하기dotenv