[Toy Project - Omuk] 5. 데이터베이스 연결 - PostgreSQL

2022. 9. 2. 00:09· Node.js/Express.js
목차
  1. 데이터 베이스
  2. 데이터베이스 적용

데이터 베이스

 

서버의 데이터를 저장하기 위해서 데이터 베이스를 연결하여 관리하도록 합니다. 데이터베이스 중에서 일단 관계형 데이터 베이스를 사용할 예정이라서 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을 통해 확인하여 작성할 수 있습니다.

 

향후 스키마 정의는 다음 게시물에서 작성하겠습니다.

저작자표시 비영리 (새창열림)

'Node.js > Express.js' 카테고리의 다른 글

[Toy Project - Omuk] 7. HTML 구조 작성(레이아웃)  (0) 2022.09.03
[Toy Project - Omuk] 6. 라우팅 분리  (0) 2022.09.02
[Toy Project - Omuk] 4. 미들웨어 추가  (0) 2022.08.31
[Toy Project - Omuk] 3. 템플릿 엔진 설치 - 서버 사이드 렌더링  (0) 2022.08.30
[Toy Project - Omuk] 2. 라우트 설정 및 라이브러리 설치  (0) 2022.08.29
  1. 데이터 베이스
  2. 데이터베이스 적용
'Node.js/Express.js' 카테고리의 다른 글
  • [Toy Project - Omuk] 7. HTML 구조 작성(레이아웃)
  • [Toy Project - Omuk] 6. 라우팅 분리
  • [Toy Project - Omuk] 4. 미들웨어 추가
  • [Toy Project - Omuk] 3. 템플릿 엔진 설치 - 서버 사이드 렌더링
턴태
턴태
import { Dream } from "future";
턴태
턴태의 밑바닥부터 시작하는 de-vlog
턴태
전체
오늘
어제
  • ROOT (187)
    • Node.js (37)
      • ES6 (1)
      • TypeScript (3)
      • Express.js (16)
      • NestJS (16)
      • JS (24)
    • 프론트엔드 (29)
      • CS (5)
    • 백엔드 (1)
      • 검색 (2)
      • Database (1)
    • 기타 툴 (1)
      • git (1)
    • 데브옵스 & 인프라 (19)
      • Kubernetes (15)
      • Docker (2)
      • Monitoring (1)
      • IaC (1)
    • Algorithm (90)
      • Implementation & simulation (5)
      • Math (4)
      • Brute Force (1)
      • String (0)
      • Graph (5)
      • Recursion & Backtracking (19)
      • Divide & Conquer (2)
      • Dynamic Programming (18)
      • Greedy (13)
      • Priority Queue (2)
      • Binary Search (6)
      • Data Structure (7)
      • Shortest Path (5)
      • Minimum Spanning Tree (1)
      • Sorting (1)
      • Prefix Sum (1)
    • Linux (1)
      • Ubuntu (1)
    • Diary (5)
      • Algorithm (1)
      • Conference (1)
      • Retrospective (3)
    • Book (0)
      • Self-Development (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Kubernetes
  • node.js
  • Toy Project
  • 익스프레스
  • 노드
  • python
  • 함수형 프로그래밍
  • 쿠버네티스
  • TypeScript
  • 타입스크립트
  • 파이썬
  • 인프런X디프만
  • 오먹
  • Omuk
  • baekjoon
  • nestjs
  • N과 M
  • 인프런
  • 자바스크립트
  • Express
  • 토이프로젝트
  • 백트래킹
  • 다이나믹 프로그래밍
  • dynamic programming
  • 네스트
  • k8s
  • 디프만
  • GREEDY
  • 백준
  • backtracking

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
턴태
[Toy Project - Omuk] 5. 데이터베이스 연결 - PostgreSQL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.