Node.js Express와 MariaDB로 게시판 만들기 - 전체 소스 코드 제공

Node.js Express와 MariaDB로 게시판 만들기 – 전체 소스 코드 제공

이번 글에서는 Node.jsMariaDB를 사용해 간단한 게시판 시스템을 구현하는 방법을 소개합니다. 이 프로젝트는 게시글 작성, 수정, 삭제 및 댓글 기능을 포함한 기본적인 게시판 기능을 갖추고 있습니다. 기존에 PHP로 구현한 PHP 게시판Node.js Express로 변환한 프로젝트입니다.

프로젝트 개요

이 프로젝트는 Node.jsExpress 웹 프레임워크, 그리고 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 레포지토리를 참고해 주세요.

함께 보면 좋은 이전 게시글

위로 스크롤