8주차 회고
dlwjs 글에 이어서 sequelize를 연습했으며, sequelize-join과 데이터 베이스 관계에 대해 배웠다.
이를 이용해서 운동선수의 정보를 확인하는 페이지를 구현하는 실습을 해볼 수 있었다.
1. Sequelize-join 관계
- 변수명.hasOne = 내가 부모, 내가 주인 변수명이 키를 갖고 있다. 나의 키를 주인으로 누군가의 외래키 설정.
⇒ 관계를 맺는 대상(자식)에게 자신의 외래 키를 추가. (Users => UserInfo) UserInfo 외래 키가 추가된다.
- 변수명.belongsTo = 누군가에게 속함. 누군가의 키를 기준으로 외래키를 만듦
⇒ 관계를 맺는 대상(부모)에게 외래 키를 받아 추가. (UserInfo => Users) UserInfo 외래 키가 추가된다.
⇒ 1:1관계, 결과적으로 2개 모두 외래키는 belongsTo의 변수에 생성됨
- 변수명.hasMany = hasOne과 기능은 동일, 복수개의 데이터 추가 가능
- 변수명.belongsToMany = 동일, 복수개 데이터 추가 (자동으로 생성)
⇒ 1:m 관계
- associate - belongsToMany = 자동으로 생성되지 않는다. 직접 지정해준다.
이를 이용해 운동선수 정보를 보여주는 페이지를 구현하기 위해 기본적으로 sequelize와 MVC 구조를 사용했다.
model 폴더에 사용할 데이터베이스를 지정하고 모듈을 exports해서 다른 파일에서 사용할 수 있도록 했다.
예를들어,
player 모델을 지정하려면 sequelize.define을 통해 column을 설정할 수 있다.
다음으로 controller폴더에 기능에 대한 동작을 정의했다.
모든 선수의 정보를 보려할 때,
현재 sequelize를 사용하므로 일반적으로 사용하던 select 쿼리문이 아닌 findAll()메소드를 이용해 데이터베이스에서 정보를 불러왔다.
마찬가지로 특정 선수만을 조회하려할 때,
findOne()메소드를 사용했고, 특정 선수를 선택하기 위한 조건인 where을 정의해주었다.
선수 정보를 추가, 수정, 삭제를 하기위해서 create, update, destroy메소드를 사용했다.
다음으로 경로를 정의하기 위해 라우터로 컨트롤러를 연결했다.
마지막으로 서버를 열기 위해 js파일에 다음과 같은 코드를 정의해 서버를 실행해주었다.
이전과 다른 점은 sequelize를 이용하고 있기 때문에 코드가 변경된 부분이 존재한다.
따라서 구현된 페이지는 다음과 같다.
데이터를 json형태로 받고 있기 때문에 다음과 같이 화면이 나타난다.
데이터베이스의 관계에 대해 자세히 배울 수 있어서 좋았고, sequelize-join에 대한 관계와 메소드를 배워서 활용할 수 있는 방법이 다양해진 것 같아 의미있는 시간이었다.
sequelize 구조를 연습하고, 이를 활용해서 데이터를 가져오는 실습까지 해볼 수 있었다.
이 과정을 통해 sequelize에서 사용하는 findAll, findOne, create 등 메소드를 새롭게 이해하며 실습할 수 있었고, hasOne, belongsTo 등 관계에 사용되는 메소드 또한 배우며 한단계 더 성장할 수 있었다.
이제 MVC 구조를 형성하는 것은 많이 익숙해져서 활용하는 데 큰 문제가 없었다. (뿌듯!!😁😁)
'부트캠프 > [POSCO x Codingon] 웹개발자 풀스택 과정 12기' 카테고리의 다른 글
[POSCO x Codingon] 클라우드, JWT, 암호화 | 웹개발자 풀스택 과정 12기 9주차 회고 2 (0) | 2024.05.02 |
---|---|
[POSCO x Codingon] Cookie/Session, 서버 | 웹개발자 풀스택 과정 12기 9주차 회고 1 (0) | 2024.04.23 |
[POSCO x Codingon] MVC-MySQL, Sequelize | 웹개발자 풀스택 과정 12기 8주차 회고 1 (0) | 2024.04.17 |
[POSCO x Codingon] MVC, MySQL | 웹개발자 풀스택 과정 12기 7주차 회고 2 (5) | 2024.04.11 |
[POSCO x Codingon] 파일 업로드, MySQL | 웹개발자 풀스택 과정 12기 7주차 회고 1 (0) | 2024.04.05 |