오늘 한일
- Node.js 심화 과제를 진행했습니다. 기존에 있던 코드를 재사용하여 빠른 속도로 과제를 완수 할 수 있었지만, 4일이란 시간이 짧지는 않은 것 같아서 처음부터 코드를 작성해 구현해보도록 하였습니다.
- DB가 포함된 프로젝트를 할 때는 가장 중요한 것이 구조도를 작성하여 틀을 맞추는 것이 가장 중요하다 생각하였습니다. Sequelize를 사용해서 DB를 구현하였고, 구현된 DB를 기반으로 CREATE 문을 작성하여 ERD를 생성하였습니다.
- 매번 정규표현식을 사용할 때는 Python에서 re 라이브러리를 사용하였지만, 처음으로 Javascript에서 정규표현식을 구현하여 Nickname, Password가 형식에 맞는지 검출해 보았습니다.
오늘 배운 것
- Node.js 심화 과제 회원 가입페이지, 로그인 페이지 구현
- Javascript 정규표현식
- DB ERD 생성
- NAS DSM 설치 완료
내일 할 것
- Node.js 심화 과제 진행
필기노트
준비사항
- MySQL로 사용하기 위해 Docker가 꺼지지 않도록 컨테이너 생성
- DB 구조도 작성
- DB에 insert into로 데이터를 넣어주도록 Javcascript 파일 생성
- Docker 실행시 npx sequerlize 와 Create 유저, Insert into Goods 를 자동적으로 하도록 Bat 파일 설정
docker run -p 3306:3306 --name test-db -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7 mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- Docker로 mysql 컨테이너를 실행하면서, 명령 프롬프트에서 종료하더라도 컨테이너가 중지될 뿐 사라지지 않도록 설정한다.
-- 대략적인 DB 구성도
User
userId integer PK NN Increment
nickname varchar(255)
password varchar(255)
createdAt datetime
updatedAt datetime
Posts
postId integer PK NN Increment
title varchar(255)
content varchar(3000)
createdAt datetime
updatedAt datetime
Comments
commentId integer PK NN Increment
postId integer FK NN
userId integer FK NN
comment varchar(255)
createdAt datetime
updatedAt datetime
-- DB 테이블 생성 쿼리문
CREATE TABLE Users(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nickname varchar(255),
password varchar(255),
createdAt datetime NOT NULL,
updatedAt datetime NOT NULL);
CREATE TABLE Posts(
postId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
userId int(11),
title varchar(255),
content varchar(3000),
createdAt datetime NOT NULL,
updatedAt datetime NOT NULL,
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE CASCADE);
CREATE TABLE Comments(
commentId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
postId int(11),
userId int(11),
comment varchar(255),
createdAt datetime NOT NULL,
updatedAt datetime NOT NULL,
FOREIGN KEY (postId) REFERENCES Posts(postId) ON DELETE CASCADE,
FOREIGN KEY (userId) REFERENCES Users(userId) ON DELETE CASCADE);
// 유저또는 게시글이 삭제될 경우 해당하는 댓글도 삭제되도록 설정
$ npx sequelize init
- Sequelize 라이브러리를 시작하기 위한 설정 파일 생성
$ npx sequelize model:generate --name Users --attributes nickname:string,password:string
- model:generate : Sequelize를 실행한다.
- --name Users : 테이블의 이름을 Users로 설정한다.
- --attributes : 해당하는 테이블의 컬럼 속성을 지정한다.
$ npx sequelize model:generate --name Posts --attributes title:string,content:string
- Posts 테이블 생성
$ npx sequelize model:generate --name Comments --attributes postId:integer,userId:integer,comment:string
- Comments 테이블 생성
$ npx sequelize db:create
- Sequelize로 작성한 DB를 생성한다.
$ npx sequelize db:migrate
- 설정한 model들을 DB와 동기화 시켜준다.
mysql > desc <tablename>
- 해당하는 테이블의 구성요소를 출력시켜준다.
mysql > select * from information_schema.table_constraints where table_name = 'Comments';
- 해당하는 테이블의 Key 속성을 출력시켜준다.
-- Html --
type = Submit [Form]
- 입력 받은 데이터를 Ajax를 통하지 않고 서버로 바로 전송할 수 있다.
ajax를 사용하기 위해서는 JQuery 스크립트를 추가해야 한다.
- <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
input 태그의 데이터를 불러오기 위해선 .val()를 사용한다.
-- Regex --
const re = /^[a-zA-Z0-9]{3,255}$/;
- 시작과 끝이 a-zA-Z0-9글자로 3 ~255개의 단어로 구성되어야 한다.
String.match(re) // 검색된 각 인자들을 list 형식으로 반환
String.search(re) // 검색된 인자의 첫번째 인덱스 위치를 반환
'항해99 > TIL' 카테고리의 다른 글
2021-07-07 항해99 TIL (0) | 2021.07.08 |
---|---|
2021-07-06 항해99 TIL (0) | 2021.07.07 |
2021-07-04 항해99 TIL (0) | 2021.07.05 |
2021-07-03 항해99 TIL (0) | 2021.07.04 |
2021-07-02 항해99 TIL (0) | 2021.07.03 |