(시퀄라이즈는 sql 작업을 쉽게 만들어주는 라이브러리
js 코드로 sql로 바꿔서 실행해준다.)
(위의 mysql2는 드라이버이다. mysql 그 자체가 아니다.)
위와 같이 수정하였다. 이 코드는 mysql2 드라이버와 sequelize랑 노드랑 연결해주는 역할을 한다.
(그리고 config의 config.json 부분을 위와 같이 우리가 전에 만든 db 관련해서 일치하도록 만든다.)
(위 app.js 의 위 부분에서 models를 require로 불러와서 아래와 같이 sequelize.sync 를 해야한다. 그러면 db와 연결이 된다. 빼먹으면 안됨)
이후 npm start를 통해 db와 연동된 것을 아래와 같이 확인 가능
(위 select 1+1 as result 또한 sql인데, sql 하나를 mysql에 보내서 연결이 잘 되어 있는지 검사하는 것이다.)
(위 두개가 다른것 :
대문자 : 시퀄라이즈 객체 생성자 , 아래와 같이 하나의 노드에서 2개이상의 mysql에 연결이 가능하다. db.Sequelize는 생략 가능하다.
소문자 : 그냥 시퀄라이즈)
3번 방법 (시퀄라이즈의 모델 은 mysql에서의 테이블이다.)
(원래는 id를 위와 같이 넣어줘야 하지만 시퀄라이즈는 id 를 자동으로 넣어주기 때문에 생략이 가능하다.
allowNull : NOTNULL이다.
(여기서는 tinyint 가 아닌 boolean 즉 앞으로 true, false를 이용해야한다.)
또한 DATE는 mysql의 DATETIME과 일치하며 DATE만 쓰고 싶은 경우 시퀄라이즈에서 DateOnly를 쓴다.
=> 이렇게 조금씩 다른 이유 : 여러 종류 db를 동시에 지원하려고 하다 보니 조금씩 다르다.
(이전 까지의 코드는 column 정의, 위의 경우는 모델에 대한 설정이다.
처음에 sequelize는 적어줘야함.
또한
timestamps (true로 하면 create_at, updated_at이 자동으로 들어감)
underscored (시퀄라이즈의 글자들을 createAt으로 할지 create_at으로 할지, 직접 만들어주는 create_at은 가능하다. 만약 이게 false면 자동생성 시에 createAt으로 된다.)
paranoid (true 이면 제거한 날짜 까지 (deleted_at)도 만들어짐)
(실제로 삭제하지는 않고 삭제된 상태라고 부른다. (soft delete)
아얘 삭제 해버리는 것 (hard delete))
(위와 같이 시퀄라이즈에서 모델이름이 User (대문자) dlaus , tableName은 자동으로 users 가 된다. (소문자 복수형))
(댓글 테이블도 비슷하게 만들 수 있다.
commenter가 없다. : 시퀄라이즈에서 관계 컬럼이라고 해서 따로 아래와 같이 만들어주는 부분이 있다.)
(또한 index.js에서 연결 객체인 sequelize를 통해 연결을 했다.)
(associate 는 나중에 설명, 미리 넣어줘도 됨, 현재 상태에서 실행 하면 오류 나서 주석처리함)
요즘 버전에서는 return.super 이런거 쓰지 않고 아래와 같이 static initiate를 사용하면 된다.
(또한 윗부분에 존재하던 modue.exports를 코드 아래부분에 배치함)
(이 부분도 init 대신 initiate로 바뀜)