it leader

예정 작업 목록

   - 유저 권한별 메뉴 불러오기

 

작업목표

    권한 테이블 만들기

    유저 권한 컬럼 만들기

    로그인 시 유저 조회시 권한 컬럼 불러오기 테스트

 

이슈

    DB 커넥션 하는 부분을 모듈로 분리하는 과정에서 해맷음

    모듈화 하는 부분에서 초기화시 DB 가 createPool 명령을 수행하지 않음..

 

해결

 

    기존 db transaction하는 부분마다 커넥션 설정하는 부분을 따로 모듈로 뺏음.

//dbConn.js

var mysql = require('mysql2/promise');
const dotenv = require('dotenv');
var path = require('path');
var pool;

//개발 - 상용 구분 프로퍼티 환경변수로 사용하는 부분 
dotenv.config({
    path: path.resolve(
        process.cwd(),
        process.env.NODE_ENV == "prod" ? "./env/.env.prod" : "./env/.env.dev"
    )
});

const dbConfig = require('./config/dbConfig');

function createPool(next){

    dbConfig.user = process.env.DB_USER;
    dbConfig.password = process.env.DB_PASSWORD;
    dbConfig.host = process.env.DB_HOST;
    dbConfig.port = process.env.DB_PORT;
    dbConfig.database = process.env.DB_NAME;

    if( this.pool == null){
        this.pool = mysql.createPool(dbConfig);
    }else{
        console.log("Db pool already Created!!");  
    }
    //console.log("dbcon : " , dbConfig);
}

function getPool(){

    if( this.pool == null){
        this.createPool();
    }
    
    return this.pool;
}

module.exports.createPool = createPool;
module.exports.getPool = getPool;

 

실제 사용은 아래와 같이

 

var dbcon = require('../conn');

async function getMenuList(_userInfo){
	
	let pool = dbcon.getPool();
    let connection = await pool.getConnection(async conn => conn);

}

 

기존 셀렉트 함수 마다 설정을 해주던 부분을 위와 같이 줄여서 코드 가독성을 높여주었음..

 

 

회고

    금일 작업에서는 권한 이나 메뉴 설계에 대해 고민하는 시간이 많았음.. 

    그리고 pug에 JSP처럼 JSTL 문법사용하여 손쉽게 화면 작업 할수 있을거라 생각했는데..

    생각보다 내가 PUG에 익숙하지 않다는걸 알게되었음.. 난관이 예상됨...

 

 

다음 작업 리스트

- 유저 정보 화면에 나열

- 유저 목록 화면에 나열 ( Pug 문법사용 )

profile

it leader

@dev__pixui

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!