Nest js 독학 삽질 일기 Day 2: Entity, DTO 만들기, github 오류

Dorito·2022년 9월 15일
0

NestJS

목록 보기
2/10

TypeORM - mySQL 연동 (Entity 만들기)

TypeORM & DB connection 벨로그 글
NestJS TypeOrm 적용하기 벨로그
https://orkhan.gitbook.io/typeorm/docs/entities
TypeORM entity 공식 문서

어제 포스팅 한 글에서 이런 테이블을 만들었다

이제 mySQL table을 typeORM을 사용해서 entity로 만들어보자.
https://orkhan.gitbook.io/typeorm/docs/entities typeORM 공식문서에 엔티티에 대해서 잘 나와있다.

uuid 컬럼 추가

  • uuid같은 경우에는 어떻게 해야하는 걸까? 구글링해봐야지

여기 문서를 참고해서 uuid 컬럼 함 넣어봐야겠다.
https://dev.mysql.com/blog-archive/mysql-8-0-uuid-support/

근데... 배신당함...


day 1 포스팅에서

어쩌구.. 이렇게 적어뒀었는데


저 사진에 나온 값은... uuid가 아니라 MongoDB의 고유 ID 포맷인 ObjectID라는 녀석이었다.

대충 개념적으로 ObjectID는 대충 시간순으로 정렬이 가능하다, 분산환경에서 효율적이다 그런 장점이 있다고... 그래서 MongoDB에서 가장 기본적으로 쓰는 아이디 포맷이라고 함. 어쨌든.. 나랑 관련이 없는 녀석이었다...

mySQL에서 uuid를 쓸지 int 형태를 쓸지는
UUID와 increment PK는 언제 사용해야할까? 글에 잘 나와있다.
MySQL에선 UUID가 검색도 저장도 비효율적인 포맷이고 저 글에서는 외부에 드러나는 DB아니면 걍 Int로 쓴다구 한다.

그리고 그냥 읽어보면 좋을 글: uuid 최적화 (CHAR(36) 대신 binary 형태로 저장해서 인덱싱 성능 증가시키기) 구글링하다가 얻어걸렸는데 신기해서 북마크해둠

기초적인 수준에서는 AUTO_INCREMENT integer ID가 낫긴 한데, 나는 가오가 중요하므로.. JS에서 버퍼 다루는 경험도 중요하니까~ UUID 써보기로 결정함
(미래의 내가 알아서 해주겠지 ^-^)

Timestamp Entity Column 추가

https://github.com/typeorm/typeorm/issues/400 여기 문서 참고해서 썼다.
https://typeorm.io/entities

Entity 완성

깃헙에도 올리긴 할건데 참고용으로 캡처함 ... ㅎㅎ

Creating DTO (Data Transfer Object)

A data transfer object will help define how data will be sent over the network and control how data will be posted from the application to the database.
To achieve this, create a directory dto inside the ./src/blog folder. Within the newly created folder, create a new file and name it create-post.dto.ts. Paste the following code into it:

https://docs.nestjs.com/openapi/types-and-parameters#types-and-parameters 참고하면서 쓰기..

From the preceding code snippet, you have marked each of the individual properties in the CreatePostDTO class to have a data type of string and as read-only to avoid unnecessary mutation.

dto의 개념은 nestjs와 typeorm을 같이 사용할 때 필요한 부분
서버로 요청을 전달하거나, 응답을 받아올 때는 규격화된 형식을 통해 데이터를 주고받는 경우가 대부분이다.
매번 매개변수나 로직을 조작해서 이를 수행하는 것은 꽤나 번거롭고 관리가 힘든 일이다.
이를 위해서 Nest에는 요청과 응답에 대한 형식을 클래스를 만들면 자동으로 변환을 해주는 기능을 제공한다.
그리고 이러한 클래스를 통상적으로 DTO(Data Transfer Object)라고 부른다.

https://github.com/typeorm/typeorm/issues/4060

github 오류 해결

걍 하던 대로 레포짓토리 만들고 깃 올리는데 아이디랑 비번 요구하길래 뭐지 했었음..


https 가 아니라 SSH로 리모트 등록해야함

그리고 다음부턴 메인브랜치에 다 추가하는게 아니라 따로 브랜치를 따서 넣는 연습을 하도록 하겠다 두둔!


아무것도 모르는 상태에서 하나씩 해가려니까 엄청나게 오래 걸린다...
몰라서 구글링하는 시간이 90퍼 오류나서 또 구글링하는 시간이 20퍼 코드 짜는 시간 1퍼
도합 111퍼의 공부를 하고있다...ㅎ

0개의 댓글