TIL ( Today I Learned )
210303_TIL
outwater
2021. 3. 4. 02:08
Busy Day
막학기가 개강하고 최대한 부담이 안가는 과목들로 선정을 했지만 신경이 쓰이는 건 어쩔 수가 없다.
정신없는 하루에도 멘탈 잘 잡자!!
🎄오늘 한 일
✔️ 1. Toyproblem22_rotateMatrix()
- M*N의 2차원 배열(matrix)을 받아, 90도 회전 시켰을 때의 rotateMatrix를 리턴하는 문제이다.
머리속으로 생각하는 것보다 이러한 문제들은 빈a4 용지에 그림과 함께 몇개의 케이스들을 쭈르륵 나열하며 규칙을 발견하는 게 중요하다고 생각했다.
그결과 규칙을 발견하여 basic case는 해결할 수 있었다. but advance case인 180도, 270도 회전과 같이 회전각도를 받아 해당 matrix를 반환하도록 하는 것은 많이 까다로웠고, reference를 통해 이해하는 정도로 toy를 마쳤다.✔️ 2. Short.ly 에서 Association을 이용하여 Join Table 구현하기
- 어제 url 을 받아 단축 url을 만들어주는 short.ly 앱의 기본 구현을 마쳤다.
오늘은 심화과정으로 여러 테이블을 만들어 테이블간의 관계를 맺는 것을 구현해보았다.
대표적으로 User 테이블과 url테이블의 1:다 관계(One To Many)를 코드로 구현해보았는데, sequelize의 공식문서가 가독성과 구성이 썩 좋지 않아서 찾는데 애를 많이 먹었다.
스키마 변경을 위해서 빈 마이그레이션 파일(스켈레톤)을 만들어주고, 해당 마이그레이션 파일을 작성하여 마이그레이트 하는 과정을 경험해보고 익혀보았다.
🎄기억할 것
✔️1. 모델과 컨트롤러의 구분
✔️ 2. ORM의 장점과 한계
- 모델은 보통 데이터를 기술하는 부분이지만, 데이터를 조작하는 코드도 상당 수 포함되어 있다.
따라서 컨트롤러가 데이터를 조작하는 부분이라고 이해하는 것은 다소 혼돈을 불러올 수 있다.- 컨트롤러의 경우 가장 핵심은 비즈니스 로직(=업무순서)를 담당한다는 것이다.
모델에서 가져온 데이터를 통해 업무순서대로 데이터를 처리하도록 하고, 이를 뷰로 보내주는 코드를 담당한다.
- ORM의 가장 큰 장점은 쿼리문을 작성하지 않고 편하게 데이터베이스에 CRUD 할 수 있다는 점이다.
- 한계로 모든 데이터들을 간단하게 UI나 ORM을 통해 가져올 수 없다. 특히 여러 조건이 달린 데이터를 가져오고 데이터분석을 하는 기업의 경우 반드시 SQL 쿼리문을 통해 데이터를 가져오고 분석하는 경우가 많다.
✔️3. Sequelize로 테이블들의 관계 설정(association)을 해주는 이유
- association을 하였을 때, 관계가 설정 된 테이블의 속성들을 세트로 불러올 수 있다.
특히 fetch API를 통해 연결된 테이블을 접근할 수 있다는 것은 매우 효과적인 기능이다.
: )