티스토리 뷰
▶facebook 프로젝트 - 데이터베이스(Maria DB) 연결
🔎 데이터베이스 연결이 필요한 부분
- 회원가입
- 새로운 회원 정보를 저장
- 로그인
- 기존 회원의 정보인지, 있다면 값 비교
- 홈 화면 게시물
- 저장되어 있는 게시물 정보(제목, 내용, 사진 등) 불러오기
- 게시물에 댓글 남기기
- 게시판
- 저장되어 있는 게시물 정보(제목, 내용) 불러오기
- 새로운 게시물 저장하기
- 기존 게시물 삭제하기
- 기존 게시물 편집하기
위와 같이 거의 모든 부분에서 데이터를 저장하고 불러오는 과정에서 데이터베이스가 필요했습니다.
🔎 Maria DB 설치 및 사용
Maria DB는 아래 사이트에서 쉽게 설치가 가능합니다.
Open Source Database (RDBMS) for the Enterprise | MariaDB
MariaDB provides open source database and database as a service (DBaaS) solutions to support scalability, mission-critical deployments, and more.
mariadb.com
참고로 저는 MySQL 포트 번호로 이미 3306번을 사용하고 있어서 Maria DB 포트 번호는 3310번으로 설정해 주었습니다.
Maria DB에 접속하는 방법은 MySQL Client 와 HeidiSQL이 있는데, ( Maria DB를 설치하면 생성됩니다 )
HeidiSQL이 훨씬 편하기 떄문에 이 방법을 이용하여 진행했습니다.
🔎 데이터베이스 생성 및 테이블 구성하기
위에서 데이터베이스가 필요한 부분에 대해서 생각해 보았었는데, 이를 바탕으로 데이터베이스를 생성하고 테이블을 구성하였습니다.
facebook이라는 본 프로젝트 데이터를 관리할 데이터베이스를 생성했습니다.
그 안에는 게시판 글에 대한 테이블(board), 댓글에 대한 테이블(comment), 사용자 정보와 관련된 테이블(users)를 생성해 주었습니다.
💼 board 테이블
- boardid : 본 테이블의 PK. 게시물 하나하나 마다 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도 값을 가지도록
- title: 게시물 제목
- text: 게시물 내용
- regdate: 게시 날짜
💼 comment 테이블
- cmtid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
- homeid: 댓글이 작성된 게시물의 id
- text: 댓글 내용
💼 home 테이블
- homeid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
- title: 게시물 제목
- subtitle: 게시물 부제목
- tags: 게시물 내용 중 하나
- url: 게시물 내용 중 하나
- text: 게시물 내용
- image: 게시물 이미지
- likecount: 좋아요 수
💼 users 테이블
- userid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
- email: 이메일 정보
- password: 비밀번호
- birthday: 생일 정보
- gender: 성별 정보
- updatetime: 업데이트 타임
- createtime: 생성 타임
🔎 Maria DB 연결
📌mysql 패키지 설치
$ npm i mysql
📌src/api/maria.js 생성
가장 먼저 방금 install한 mysql 패키지를 불러와야겠죠?
const mysql = require('mysql');
이제 데이터베이스를 연결하기 위해서 연결 설정 정보를 객체에 담아줄겁니다.
참고로 해당 정보들은 노출되어서는 안 되므로 따로 파일을 생성하여 관리합니다.
config/db.config.js 라는 파일을 만들어 정보를 담아 가져와 쓰는 방법이 더 좋은 방법일 거 같습니다.
const conn = {
// 연결 설정 정보
host: '127.0.0.1',
port: '3310',
user: 'root',
password: '****',
database: 'facebook',
};
이제 생성한 연결 설정 정보 객체를 이용하여 연결을 시도합니다.
const connection = mysql.createConnection(conn);
connection.connect();
앞으로는 Maria라는 객체에 쿼리문을 통해 리턴값을 받아내는 메서드를 정의하여 api 통신 때 하나씩 사용할 예정 입니다.
저는 파일 하나에 연결 정보를 같이 작성했지만, 그 정보를 따로 작성하고 사용하는 코드를 아래에 적어놓도록 하겠습니다!
📄 src/config/db.config.js
module.exports = {
HOST: "localhost",
USER: "root",
PASSWORD: "123456",
DB: "new_db"
};
📄 src/api/maria.js
const mysql = require("mysql");
const dbConfig = require("../config/db.config.js");
// 데이터베이스 연결 설정 정보
const conn = {
host: dbConfig.HOST,
user: dbConfig.USER,
password: dbConfig.PASSWORD,
database: dbConfig.DB
};
const Maria = {};
// Maria.findAccountid = ...
// 이런식으로 메서드를 만들어 나가고
// src/api/index.js에서 api와 같이 사용할 예정!
module.exports = Maria;
'코드 회고 > facebook 프로젝트' 카테고리의 다른 글
[facebook 프로젝트] 계정 찾기 & 탈퇴 기능 구현 (0) | 2023.01.16 |
---|---|
[facebook 프로젝트] 홈화면 게시물 - 데이터베이스에서 가져와서 컴포넌트로 보여주기 (0) | 2023.01.15 |
[facebook 프로젝트] 회원가입 & 로그인 기능 구현 (0) | 2023.01.14 |
[facebook 프로젝트] 프로젝트 폴더 구성 (0) | 2023.01.13 |
[facebook 프로젝트] facebook project를 회고 하기 전에 (3) | 2023.01.13 |
- Total
- Today
- Yesterday
- jest
- 프로젝트 회고
- rtl
- JSP
- 자바스크립트
- 프론트엔드 공부
- 파이썬
- 프론트엔드
- 리액트
- Python
- next.js
- 데이터분석
- 리액트 훅
- 인프런
- 자바스크립트 기초
- 디프만
- 딥러닝
- CSS
- frontend
- 스타일 컴포넌트 styled-components
- 자바
- 머신러닝
- react
- 타입스크립트
- HTML
- testing
- react-query
- 프론트엔드 기초
- styled-components
- TypeScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |