Node 1 - Exercise

Woo Hwukjun·2021년 1월 31일
0

express middleware, next()
settimeout함수 sleep

초기로 해야할것

$ touch server.js
$ npm init -y
$ npm i express sequelize sequelize-cli mysql2
$ npm i -D nodemon (D=>stands for dependencies (바로바로 저장되고 바로실행된다.))
$ npx sequelize init (Don't need migration and seeders)

  • open workbench
    -DROP DATABASE IF EXISTS 데이터베이스 이름;
    -CREATE DATABASE 데이터베이스 이름;
    config setting change password

1. 데이터베이스 모델링

데이터베이스 생성하기

  1. mysql -u root -p 그리고 비밀번호
  2. create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
  3. create user '사용자이름'@'localhost' identified by '비밀번호'; //사용자생성
  4. grant all privileges on 데이터베이스이름.* to 사용자이름@localhost; //사용자 데이터베이스에 권한주기

테이블 생성하기(Migration)

  1. dbdiagram.io 에서 ERD이름.sql 확장자 파일 내보내기
  2. ERD이름.sql 파일 수정하기
DROP TABLE IF EXISTS users, articles, comments;

CREATE TABLE `users` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `email` varchar(100) UNIQUE NOT NULL,
  `password` varchar(200) NOT NULL,
  `status` ENUM ('ACTIVE', 'INACTIVE') NOT NULL DEFAULT "ACTIVE", 
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP, 
  `updated_at` datetime ON UPDATE CURRENT_TIMESTAMP, # 수정된 부분
  `deleted_at` datetime DEFAULT null
);
CREATE TABLE `articles` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `title` varchar(200) NOT NULL,
  `body` varchar(2000) NOT NULL,
  `status` ENUM ('DRAFT', 'PUBLISHED', 'DELETED') NOT NULL DEFAULT "DRAFT",
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime ON UPDATE CURRENT_TIMESTAMP,
  `deleted_at` datetime DEFAULT null
);
CREATE TABLE `comments` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `article_id` int NOT NULL,
  `user_id` int NOT NULL,
  `body` varchar(1000) NOT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime ON UPDATE CURRENT_TIMESTAMP,
  `deleted_at` datetime DEFAULT null
);
# 외래키 설정하는 부분
ALTER TABLE `articles` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
ALTER TABLE `comments` ADD FOREIGN KEY (`article_id`) REFERENCES `articles` (`id`);
ALTER TABLE `comments` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);

3.ERD이름.sql 파일을 MySQL 데이터베이스에 마이그레이션 하기

  • mysql -u 사용자이름 -p 데이터베이스이름 < ERD이름.sql
  1. 데이터베이스에 접속해서 테이블이 잘 생성되었는지 확인하기
  • mysql -u 사용자이름 -p; use 데이터베이스이름; show tables;

Sequelize ORM

Installing

  • $ npm install --save sequelize
  • $ npm install --save mysql2
profile
미래 개발자

0개의 댓글