Part 1 - Sequelize 및 CLI 도구 이용
이번 시간에 만들게 될 short.ly라는 애플리케이션은 bit.ly 와 같이 긴 URL을 짧게 단축시켜주는 앱입니다.
여기에는 urls 라는 테이블을 만들어, 원본 URL과 단축 URL의 방문 횟수를 기록합니다. 다음은 완성된 urls 테이블의 스키마입니다. 다음 테이블을 직접 SQL문을 이용해서 만드실 필요는 없습니다. 우리는 ORM을 이용해 아래와 같은 테이블을 만들게 될 것입니다.
mysql> describe urls;
Getting Started
사전 준비: sequelize 및 sequelize-cli 설치
Sequelize ORM 공식 사이트를 통해 Sequelize를 설치하세요.
sequelize.org/master/manual/migrations.html 따라하기
cli를 통해 ORM을 잘 사용할 수 있도록 bootstraping(프로젝트 초기 단계를 자동으로 설정할 수 있도록 도와주는 일)을 해줘야 합니다.
성공적으로 bootstraping이 끝나면 다음 파일 및 폴더들이 생성됩니다. 직접 models 디렉토리를 만드는 것이 아닙니다!
1. Sequelize CLI를 설치
npm install --save-dev sequelize-cli
2. 빈 프로젝트를 생성하려면 init명령
npx sequelize-cli init
3. config/config.json
{
"development": {
"username": "root",
"password": null,
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql"
}
}
"password": "비밀번호",
작은 따음표 ' ' 하니 에러 큰 따음표로 하자 " "
4. 모델 생성
데이터 유형
sequelize.org/master/manual/model-basics.html#data-types 참조
npx sequelize-cli model:generate --name url --attributes firstName:string,lastName:string,email:string npx sequelize-cli model:generate --name url --attributes url:STRING,title:STRING,visits:INTEGER
migrations 풀더에 20210119030944-create-url.js 생김
숫자는 날자 시간
5 . 마이그레이션 실행
npx sequelize-cli db:migrate
마이그레이션 취소
npx sequelize-cli db:migrate:undo
모든 마이그레이션을 실행 취소
db:migrate:undo:all
작업할떄 지우거나 수정할일 있으면 마이그레이션을 실행했다면 취소를해주자
이것떔에 에러가나서 시간을 잡아먹었다
테스트 실행하면
['id', 'int(11)'],
['url', 'varchar(255)'],
['title', 'varchar(255)'],
['visits', 'int(11)'],
['createdAt', 'datetime'],
['updatedAt', 'datetime']
이렇게 나오면서 틀렸다고한다
틀린이유
테스트에서는 int 인데 결과값을 int(11) 이라고 나오게해서그렇다
이유는 mysql 버전 문제
https://github.com/codestates/help-desk/issues/1997
헬프데스크 참조 해서 버전을 업글하니 잘 통과되었다
'IM > Immersive' 카테고리의 다른 글
Sprint - Short.ly MVC Part 2 (0) | 2021.01.19 |
---|---|
Part 1 (0) | 2021.01.19 |
MVC (0) | 2021.01.19 |
Database memo (0) | 2021.01.15 |
leansql memo (0) | 2021.01.14 |