필요한 패키지 설치
npm install pg
npm install @types/pg --save-dev
폴더 구조 설계
src
├── controllers
│ └── authController.ts
├── db
│ └── index.ts // PostgreSQL 연결 설정
│ └── userModel.ts // 사용자 관련 데이터베이스 쿼리 ( Model )
├── middlewares
│ └── authMiddleware.ts
├── utils
│ └── bcryptConfig.ts
│ └── jwtConfig.ts
├── app.ts
└── .env
PostgreSQL 연결 설정
# db/index.ts
import dotenv from 'dotenv';
dotenv.config();
import { Pool } from 'pg';
// PostgreSQL 연결 설정
const pool = new Pool({
user: process.env.DB_USER, // .env에 정의된 DB 사용자
host: process.env.DB_HOST, // .env에 정의된 DB 호스트
database: process.env.DB_NAME, // .env에 정의된 DB 이름
password: process.env.DB_PASSWORD, // .env에 정의된 DB 비밀번호
port: parseInt(process.env.DB_PORT || '5432', 10), // .env에 정의된 DB 포트
});
export default pool;
연결 테스트
// DB TEST
pool.connect()
.then(() => console.log('PostgreSQL connected successfully'))
.catch(err => console.error('Error connecting to PostgreSQL', err));
최상단 app에서 import 이후 connect를 통해서 데이터베이스 연결이 잘 되나 확인하기
마이그레이션
# db/migration.ts
import pool from './index';
const createUserTable = async () => {
const query = `
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
email VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL
);
`;
try {
await pool.query(query);
} catch (error) {
throw error;
}
}
const migration = async () => {
try {
await createUserTable();
console.log('Migration completed successfully');
} catch (error) {
console.error('Migration failed', error);
}
}
migration().finally(() => pool.end());
임시로 작성한 사용자 테이블 생성 쿼리를 함수로 분리하여 migration.ts 파일에 작성
작동 테스트
- 타입스크립트 형태의 코드를 자바스크립트 코드로 컴파일 ( 빌드 )
- 빌드된 자바스크립트 파일을 실행하여 함수가 제대로 작동 되는 지 확인
결론
데이터베이스 연결과 연결 된 데이터베이스에 테이블을 생성하여 테스트 해보는 예제
'Nodejs' 카테고리의 다른 글
Postgresql TypeORM으로 마이그레이션 하기 (0) | 2024.12.19 |
---|---|
JWT, Bcrypt 예제 (0) | 2024.12.18 |
Nodejs 개발환경 셋팅 (0) | 2024.12.18 |