[MySQL/Project] myPage - 데이터베이스

박우현·2021년 1월 11일
0
post-thumbnail
post-custom-banner

➕ MySQL 데이터베이스

myPage 프로젝트를 MySQL 데이터베이스 기반으로 변경하는 과정을 기록한다.

✔ Update 1 (21.1.11)

변경점

  • 모든 탭을 파일 기반이 아닌 MySQL 데이터베이스 기반으로 변경. 단, 이미지는 포함하지 않고 텍스트만 이동

변경방법

//mysql 모듈 설정
let mysql = require('mysql');
let db = mysql.createConnection({
  host    : 'localhost',
  user    : 'root',
  password: '111111',
  database: 'test'
});

//db와 연결
db.connect();

//MySQL를 명령어 사용, 데이터를 추출
db.query(MySQL 명령어(e.g. 'SELECT * FROM table'), function(error, results, fields){
  //'table[i].열'의 형식으로 값을 추출할 수 있다.
});

개선방안

  • 이미지를 MySQL 데이터베이스에 저장하는 방법
  • 이모티콘을 MySQL 데이터베이스에 깨지지 않게 저장하는 방법

✔ Update 2 (21.1.12)

- 모든 탭에 CUD 기능을 추가

- 데이터베이스에서 경로를 읽어오는 방식으로 이미지 구현

  • Blob 포맷으로 저장하는 방법이 있으나, Blob의 경우 메모리를 약 30%정도 더 많이 사용하므로 파일의 경로를 데이터베이스에 저장하고, 경로를 데이터베이스에서 불러오는 식으로 구현

- 데이터베이스에 이모지 저장을 구현

  1. 데이터베이스를 utf8mb4로 생성 또는 변경
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
CREATE DATABASE database_name DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
  1. Connection을 생성할 때 charsetutf8mb4로 설정
let db = mysql.createConnection({
  host    : 'localhost',
  user    : 'root',
  password: 'zxcvZXCV',
  database: 'myPage',
  charset : 'utf8mb4'
});

개선방안

  • 페이지 구현
  • 로그인 구현

✔ Finished (21.1.12)

이모티콘이 안되서 하루종일 삽질했는데, 다음날 보니 한줄만 추가하면 되는 것이었다... 너무나 허무하지만 프로그래밍이 원래 그런 것이라... 그래도 구현 하고나니 후련하다. 이제 페이지와 로그인도 구현해보자!

post-custom-banner

0개의 댓글