개발 창고/NodeJS

[Database] MSSQL DB Pool 설정

로이제로 2022. 5. 3. 10:18
반응형


이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일)

0. mssql 모듈 설치

 $ npm i mssql

1. db config 파일 생성

  : 서버와 개발환경 분리를 위하여, config파일은 분리하여 관리하는 것이 좋습니다.

// dbconfig.js

module.exports = {
    port:{DB서버 포트}
  , user:'{계정아이디}'
  , password:'{계정비밀번호}'
  , server:'{DB서버 아이피}'
  , database:'{데이터베이스 명}'
  , options: {
      encrypt: true, // Use this if you're on Windows Azure
    }
  , pool: { max: 5, min: 1, idleTimeoutMillis: 30000, }
  , trustServerCertificate: true
}

2. db pool 생성

  : db connection을 관리할 pool 생성

// sql.js
const sql = require('mssql');
const config = require('./dbconfig');

const pool = 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 = pool;

3. db query 실행

  : 생성한 pool의 sql을 server단에서 import 받아서 사용

// index.js

const express = require('express');
const app = express();
const PORT = process.env.PORT || 8080;	// 8080포트로 지정
const pool = require('./sql');			// 사전에 생성산 pool 로드

// http://localhost:8080/api/test로 들어온 경우의 함수 생성
app.get('/api/test', async (req, res) => {
    try{
        const query = await pool;               // Query 실행을 위한 Pool 지정
        const result = await query.request()    // Query 요청
            .input('KEY', 'ASDF')				// 하단 query에 @로 들어가는 파라미터 값을 사전에 설정
            .query("SELECT TOP 10 * FROM TABLE_NAME WHERE KEY = @KEY");
        res.send(result);                       // Response에 결과값을 포함하여 전달
    }catch(err){
        res.status(500);                        // 에러 발생시 Response 상태를 서버에러인 500에러로 세팅
        res.send(err.message);                  // 에러 발생시 Response에 서버에러 내용 포함 전달
    }
})

// 서버 실행
app.listen(PORT, () => {
    console.log(`Server On : http://localhost:${PORT}/`);
})

 

반응형