[Toy Project - Omuk] 5. 데이터베이스 연결 - PostgreSQL
데이터 베이스
서버의 데이터를 저장하기 위해서 데이터 베이스를 연결하여 관리하도록 합니다. 데이터베이스 중에서 일단 관계형 데이터 베이스를 사용할 예정이라서 RDBMS 툴을 사용하도록 하겠습니다.
RDBMS 에는 MySQL, MsSQL, Oracle, PostgreSQL, MariaDB 등이 있지만, MySQL과 PostgreSQL이 가장 사용자가 많습니다. 둘 중 어떤 것을 고를지 고민이 됐었는데, Stackoverflow survey 2022에서 Loved vs Dreaded 중 1등, want에서도 1등이었기 때문에 PostgreSQL을 공부하도록 하겠습니다.
데이터베이스 적용
1. 설치
npm i pg
2. 메인 파일 작성
여러 가지 적용 방법이 있겠지만, 공식문서를 따라가는 것이 좋다고 생각하여 공식 문서의 설치 방법을 참고하겠습니다.
구조를 조금 체계적으로 유지하기 위해서 루트 디렉터리 아래에 models 라는 폴더를 만들어주고, index.js 파일을 작성합니다.
그래서 현재 디렉터리 구조는 아래와 같습니다.
.
│ 📄 기타 환경 파일들
├── .env
├── package.json
├── package-lock.json
├── node_modules
│
│ 💻메인 파일들
├── app.js
├── lib
│ └── handler.js
├── models
│ └── index.js
├── public
│ ├── images
│ │ └── logo.png
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
└── views
├── home.handlebars
└── layouts
├── main.handlebars
└── test.handlebars
~/models/index.js 에서 다음과 같이 코드를 작성합니다.
import pg from "pg";
const env = process.env.NODE_ENV || "development";
import config from "../config/config.js";
const pool = new pg.Pool({
user: config[env].user,
host: config[env].host,
database: config[env].database,
password: config[env].password,
port: config[env].port,
});
export default pool;
새로운 커넥션 풀을 만들어 사용합니다.
데이터베이스에 대한 설정파일을 새로 생성하여 config폴더에 저장해두었습니다. 그 파일에 데이터베이스에 대한 내용을 넣어둡니다. 이때, 실행 환경이 개발 환경인지, 배포 환경인지, 테스트 환경인지에 따라서 다르게 접속하기 위해서 객체를 통해 따로 저장했습니다.
const config = {
development: {
user: [유저 이름],
host: [호스트],
database: [데이터베이스 이름],
password: [비밀번호],
port: 5432,
},
};
export default config;
위의 설정은 pgAdmin을 통해 확인하여 작성할 수 있습니다.
향후 스키마 정의는 다음 게시물에서 작성하겠습니다.