Node.js Express와 MariaDB로 게시판 만들기 – 전체 소스 코드 제공
이번 글에서는 Node.js와 MariaDB를 사용해 간단한 게시판 시스템을 구현하는 방법을 소개합니다. 이 프로젝트는 게시글 작성, 수정, 삭제 및 댓글 기능을 포함한 기본적인 게시판 기능을 갖추고 있습니다. 기존에 PHP로 구현한 PHP 게시판을 Node.js Express로 변환한 프로젝트입니다.
프로젝트 개요
이 프로젝트는 Node.js와 Express 웹 프레임워크, 그리고 MariaDB를 사용하여 간단한 CRUD 게시판을 만드는 데 목적을 두고 있습니다. 이 글에서는 Node.js를 공부하는 분들에게 도움이 될 수 있도록 게시판 기능을 구현하는 방법을 설명하며, 프로젝트 소스 코드도 제공합니다.
게시판 구현을 통해 CRUD (Create, Read, Update, Delete) 기능을 연습할 수 있으며, 댓글 기능까지 포함되어 있어 실제로 사용 가능한 간단한 게시판 시스템을 구축하는 과정도 경험할 수 있습니다.
사용된 패키지
프로젝트에서 사용된 주요 패키지들은 다음과 같습니다. 각 패키지는 Node.js 환경에서 게시판을 구성하는 데 필수적인 역할을 합니다.
- express: Node.js를 위한 웹 프레임워크로, HTTP 요청을 처리하고 라우팅을 관리하는 데 사용됩니다.
- mysql2: MariaDB와 같은 MySQL 계열의 데이터베이스와 연결하여 데이터를 처리하는데 사용됩니다.
- body-parser: 클라이언트에서 보내는 폼 데이터를 쉽게 처리하기 위한 미들웨어로 사용됩니다.
- dotenv: 환경 변수 파일(.env)에서 설정 값을 로드하여 민감한 정보를 코드에서 분리하는 데 사용됩니다.
- ejs: 서버에서 데이터를 HTML로 렌더링하기 위한 템플릿 엔진입니다.
- bcrypt: 사용자 비밀번호를 안전하게 저장하기 위해 암호화하는 데 사용됩니다.
프로젝트 클론
프로젝트의 전체 소스 코드는 GitHub에서 제공됩니다. 아래 명령어를 사용하여 프로젝트를 클론할 수 있습니다.
git clone https://github.com/BlueShareHub/node-board.git클론한 프로젝트를 로컬 환경에서 실행하기 위해 필요한 설정과 데이터베이스 설정은 다음 단계를 따르시면 됩니다.
프로젝트 주요 기능
이 프로젝트는 게시판 기능을 지원하는 실용적인 웹 애플리케이션입니다. 다음은 주요 기능입니다.
- 글 작성: 게시판에서 글을 작성할 수 있습니다.
- 댓글 기능: 게시글에 댓글을 달 수 있습니다.
- 글 수정 및 삭제: 작성된 글은 비밀번호 확인 후 수정하거나 삭제할 수 있습니다.
- 조회수 카운트: 게시글이 조회될 때마다 조회수가 증가합니다.
데이터베이스 테이블 구조
게시판은 MySQL 계열 데이터베이스인 MariaDB를 사용하며, 다음과 같은 테이블 구조를 가지고 있습니다.
-- 게시판 테이블
CREATE TABLE php_board (
id INT AUTO_INCREMENT PRIMARY KEY, -- 게시글 ID (자동 증가, 기본 키)
title VARCHAR(255) NOT NULL, -- 게시글 제목
content TEXT NOT NULL, -- 게시글 내용
author VARCHAR(100) NOT NULL, -- 작성자 이름
password_hash VARCHAR(255) NOT NULL, -- 비밀번호 해시값
views INT DEFAULT 0, -- 조회수 (기본값: 0)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 게시글 작성 시간 (자동 현재 시간)
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 게시글 수정 시간 (자동 업데이트)
);
-- 댓글 테이블
CREATE TABLE php_comments (
id INT AUTO_INCREMENT PRIMARY KEY, -- 댓글 ID (자동 증가, 기본 키)
post_id INT NOT NULL, -- 게시글 ID (php_board 테이블과 외래 키 관계)
content TEXT NOT NULL, -- 댓글 내용
author VARCHAR(100) NOT NULL, -- 댓글 작성자 이름
password_hash VARCHAR(255) NOT NULL, -- 댓글 비밀번호 해시값
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 댓글 작성 시간 (자동 현재 시간)
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 댓글 수정 시간 (자동 업데이트)
-- php_board 테이블의 id 필드와 외래 키 관계 설정, 게시글이 삭제되면 연결된 댓글도 삭제됨
FOREIGN KEY (post_id) REFERENCES php_board(id) ON DELETE CASCADE
);프로젝트 실행 방법
다음 명령어로 프로젝트에 필요한 패키지를 설치하고 환경 변수를 설정한 후 실행할 수 있습니다.
npm install환경 변수 파일 .env를 설정하여 데이터베이스와 연결합니다. 그 후, 아래 명령어를 통해 서버를 실행할 수 있습니다.
npm start질문 및 피드백
이 프로젝트와 관련하여 궁금한 점은 자유게시판에 글을 남겨주세요. 아는 범위 내에서 최대한 빠르게 답변을 드리겠습니다. Node.js와 MariaDB를 공부하는 모든 사용자들에게 도움이 되었으면 좋겠습니다.
더 자세한 사항은 GitHub 레포지토리를 참고해 주세요.
함께 보면 좋은 이전 게시글
- Node.js에서 MariaDB 데이터베이스 연결 및 데이터 조회 방법
- Express에서 EJS를 활용한 동적 웹 페이지 만드는 방법
- Node.js에서 bcryptjs를 이용한 비밀번호 해싱하는 방법
- Express 요청 데이터 파싱: 내장 메서드와 body-parser 미들웨어
- Node.js에서 dotenv 라이브러리를 활용한 환경 변수 설정하는 방법
이 글이 도움이 되셨다면 공유 부탁 드립니다.



