✔️ Node.js 백엔드 개발
모델과 테이블 생성하기
지금은 직원 저장용 테이블을 생성해보겠다.
중요한 포인트!
Sequelize에서는 데이터베이스에 존재하는 하나의 테이블이 자바스크립트 코드에서 하나의 class로 대응이된다.
이 클래스로 만든 객체는 결국 해당 테이블에서 하나의 row로 해당이된다.
출처 : 코드잇
그리고 Sequelize-cli 명령으로 직원 정보테이블에 대응되는 멤버라는 클래스를 성생해보겠다.
특정 명령어는....
출처 : 코드잇
위에 빨간색으로 칠해진 것은 model를 생성한다는 의미이다.
모델이란 하나의 테이블에 대응되는 하나의 클래스를 의미한다.
그 특정 모델의 이름은 Member라고 할 것이고, 그 다음부터는 모델들의 속성들이 쭉 나열되어있다.
보면은, 각각의 속성 이름들과 데이터타입이 보인다.
id속성이 안보인다?
그 이유는 sequelize에서는 기본적으로 i라는 column을 추가해준다.
위에 있는 코드를 실행하면, 두 가지의 파일이 생성된다.
가장 먼저할 일!
만든 COWORK 데이터베이스에 직원 정보를 관리하는 테이블을 만드는 것이다.
migrations 디렉토리안에 방금만든 파일을 선택한다.
해당 파일을 사용하면 테이블을 만들 수 있다.
migrations이란?
데이터베이스에 일어나는 모든 변경사항을 의미한다. (ex 테이블 생성, column 수정)
예 )
위에 있는 코드는 어떠한 객체 하나를 웹으로 공개중이다.
up과 down이라는 메소드가 존재한다.
맨 위에있는 up 메소드는 migrations을 적용할 때 사용되고, down 메소드는 migrations을 적용해제할 때 사용이된다.
up 메소드는 Members라는 테이블을 생성하는 메소드
createTable은 테이블을 생성하는 메소드
위에 코드는, 정의했 던 member 모델의 대응되는 테이블을 실제로 데이터베이스에 만드는 코드이다.
down 메소드에서 dropTable은 테이블을 삭제하는 메소드
Sequelize 특징!
단수형태로 이름을 지었어도, 테이블을 이름은 자동으로 복수형으로 변환시킨다.
위에 코드를 잘 보면, 정리한 적이 없는데 자동으로 포함이 된 column이 존재한다.
보통 테이블을 설계할 때, 해당 row의 생성시간과 갱신시간을 colum들을 추가하는 경우가 많다.
Sequelize-cli에서 자동으로 명령을 추가해준다.
대신에 매번 직접 값을 넣지않아도 현재 시간이 자동으로 설정해보겠다.
defaultValue라는 값을 설정하면, column에 값을 넣어주지 않았을 때 기본값을 지정할 수 있다.
드디어 members 테이블을 생성해본다.
터미널에...
위에 명령어는 migrations 디렉토리에 있는 모든 migrations 파일들을 적용하라는 뜻!
실행하면, COWORK 데이터베이스안에 members라는 테이블이 생성이된 것 이다.
테이블 지우기
터미널로 직접 코드 실행해보기
가장 최근에 적용된 migration 하나를 해제하는 명령이다.
reverted라는 파일들이 해제된 migrations이다.
다시 테이블을 생성할려면....
끝으로 :
오늘은 Sequelize을 사용해서 테이블을 생성하거나 지우는 방법을 알아냈다.
npx가 패키지를 관리하는 모듈이라는 것을 배우면서 npm은 로컬 모듈에 저장되는 반면, npx는 일회성으로 새로운 패키지 버전이 있으면 기존의 파일을 삭제하고 실행시키는 장점이있다.
npm은 새로운 버전이 있으면, 기존의 정보를 제거하고 새롭게 설치를 한다.
너무나도 알아야하는게 많아서 힘들다.
(npm install npx -g) <- npx 설치방법