profile
블로그 이전 : https://medium.com/@jaegeunsong97

NestJS-Follow count

팔로우를 누른 경우, 팔로우 요청 또는 팔로우 삭제 경우에만 count를 조절하도록 하겠습니다.트랜젝션을 사용해서 구현을 해보겠습니다. 먼저 count를 담당할 컬럼을 만들겠습니다.users.entity.tsusers.controller.tsusers.service.t

2024년 2월 23일
·
0개의 댓글
·
post-thumbnail

NestJS-Follow

🖊️이론 인스타그램 기반의 팔로우 시스템을 적용하겠습니다. Following Many to Many Relation Mnay To Many 관계에서는 중간 테이블을 만들어야 합니다. 하지만 Follow의 경우, User User 형태가 됩니다. 따라서 다음과 같이 만들어야 합니다. User 테이블이

2024년 2월 23일
·
0개의 댓글
·
post-thumbnail

NestJS-Authorization

patchPost의 경우 ADMIN 뿐만 아니라 본인인 경우에도 허용이 되도록 만들어야 합니다. 이것을 guard를 사용해서 만들어보겠습니다.posts/guard/is-post-mine-or-admin.guard.tspost 서비스에서 해당 post가 나의 것인지 확인

2024년 2월 22일
·
0개의 댓글
·
post-thumbnail

NestJS-RBAC(Role Based Access Control)

관리자만 Post를 삭제할 수 있도록 RBAC을 사용하겠습니다. 먼저 관리자인지 아닌지를 구분하는 데코레이터를 만들겠습니다.users/decorator/roles.decorator.tsposts.controller.ts메타데이터를 적용했으니까, 관리자가 아니면 아래 d

2024년 2월 22일
·
0개의 댓글
·
post-thumbnail

NestJS-Module Nesting

댓글 기능을 만들도록 하겠습니다. 댓글의 경우 Post 내부에 존재하기 때문에 posts 내부에 생성을 하도록 하겠습니다.=====================

2024년 2월 22일
·
0개의 댓글
·
post-thumbnail

NestJS-Web Socket(deep)

🖊️Validation pipe 이번에는 Pipe를 사용해보도록 하겠습니다. REST API에서의 pipe와 Gateway에서의 API는 서로 다르지 않습니다. 🖊️Exception Filter 적용 🖊️Guard 적용 🖊️decorator 기반 로직

2024년 2월 18일
·
0개의 댓글
·
post-thumbnail

NestJS-Web Socket(basic)

이 HTTP통신의 단점은 단방향이라는 것입니다. client쪽에서 반드시 요청을 보내야 서버에서 응답을 보내주게 됩니다.따라서 웹소켓을 사용하게 되면 요청와 응답의 경계가 사라집니다.웹소켓을 사용하면 파이프가 생기게 됩니다. 이를 통해서 서버에서 어떤일이 발생하면 사용

2024년 2월 17일
·
0개의 댓글
·
post-thumbnail

NestJS-Middleware

공식문서미들웨어는 가장 앞에서 먼저 요청을 받습니다.Middleware functions can perform the following tasks:execute any code.(어떤 코드는 실행가능)make changes to the request and the re

2024년 2월 15일
·
0개의 댓글
·
post-thumbnail

NestJS-Exception filter

Exception Filter는 로직처리가 되고 진행이 됩니다. 그 후에는 interceptor로 이동하게 됩니다. 즉 interceptor에서도 Exception Filter를 핸들링 할 수 있다는 의미입니다.Exception Filter는 예외를 필터링 하는 것입니

2024년 2월 15일
·
0개의 댓글
·
post-thumbnail

NestJS-Interceptor

인터셉터의 경우 요청, 응답일 때 발생합니다. 즉 요청과 응답을 핸들링 할 수 있다는 것입니다.공식문서여기서 주목할 점은 각각의 interceptor를 따로 핸들링하는 것이 아니라, 한 곳에서 2개 모두 핸들링이 가능합니다.전반적으로 사용할 수 있는 intercepto

2024년 2월 15일
·
0개의 댓글
·
post-thumbnail

NestJS-Transaction

TransactionA model, B modelPost API -> A 모델을 저장하고, B 모델을 저장한다.만약에 a를 저장하다가 실패하면 b를 저장하면 안될경우 -> all or nothingimage는 1개보다는 여러개를 올릴 수 있도록 바꿔보겠습니다. 여러개를

2024년 2월 12일
·
0개의 댓글
·
post-thumbnail

NestJS-선 업로드

🖊️이론 고전적인 방법으로, 제목 내용 이미지를 작성하고 업로드 버튼을 누르면 서버로 전송이 됩니다. 현재 구현돼있는 이미지 업로드 방식 제목, 내용, 이미지를 모두 선택한 다음 모든 정보를 한번에 서버로 업로드 텍스트는 빠르지만 파일은 오래걸릴 수 있음 업로드

2024년 2월 7일
·
0개의 댓글
·
post-thumbnail

NestJS-Static File Serving

파일이 잘 올라갔지만, 이 파일을 볼 수 있어야합니다. 따라서 Static File을 이용해서 볼 수 있도록 만들겠습니다. Static File은 이미지를 의미합니다. 이후에 경로를 외부에서도 볼 수 있도록 바꾸는 것입니다. nest.js에서는 이렇게 이미지와 같은 S

2024년 2월 6일
·
0개의 댓글
·

@PreUpdate, @PrePersist

@PreUpdate와 @PrePersist는 JPA에서 사용되는 라이프사이클 콜백 어노테이션입니다. 엔티티의 상태가 DB에 저장되기 전에 동작이 수행되도록 지정하는 데 사용됩니다.엔티티의 상태가 업데이트 되기전에 실행되는 메소드입니다.엔티티가 처음으로 저장되기 직전에

2024년 2월 6일
·
0개의 댓글
·
post-thumbnail

NestJS-파일 업로드

자바스크립트 진영에서는 이미지를 Multer를 이용해서 쉽게 풀어나갑니다. 따라서 Nest.js에서도 Multer 라이브러리를 사용해서 파일 업로드를 구현하겠습니다. 먼재 4개의 페키지multer @types/multer uuid @types/uuid 를 설치하겠습니다

2024년 2월 4일
·
0개의 댓글
·
post-thumbnail

NestJS-config module

auth/const/auth.const.ts지금 우리는 환경변수를 다음과 같이 작성을 했습니다. 매우 중요한 정보이기 때문에 노출이 안되어야 합니다. 따라서 깃허브와 같은 곳에서는 깃허브에 올릴 때, gitignore를 해줘야 합니다.그리고 nest.js에서는 이런 환

2024년 2월 4일
·
0개의 댓글
·

SEQUENCE와 IDENTITY

identity전략은 DB에 값을 저장하고 나서야 기본 키 값을 구할 수 있습니다.이유는 엔티티가 영속 상태가 되기 위해서는 식별자가 필요합니다. IDENTITY 전략의 경우, 식별자 생성을 DB에 저장해야 얻을 수 있으므로 em.persist()를 호출하여 객체를 영

2024년 1월 31일
·
0개의 댓글
·

@JsonInclude

@JsonInclude는 Java 객체를 JSON으로 변환할 때 포함할 필드를 지정합니다. 객체의 일부 필드를 무시하고 JSON으로 변환할 떄 해달 필드를 제외할 수 있습니다.@JsonInclude(JsonInclude.Include.NON_NULL)Null이 아닌 필

2024년 1월 31일
·
0개의 댓글
·
post-thumbnail

SecurityContextHolder

Spring Security 컨텍스트에서 사용자의 정보를 가져오는 코드입니다.Spring Security는 인증된 사용자의 정보를 Authenticatoin 객체에 저장합니다.따라서 SecurityContextHolder.getContext().getAuthentica

2024년 1월 31일
·
0개의 댓글
·

BaseEntity 설계

실무에서 BaseEntity 추상클래스가 반드시 가져야하는 필드들입니다.serialVersionUID: 데이터의 무결성을 지키기 위해서 고유 식별자로 존재해야합니다. 직렬화와 역직렬화시 매핑을 통해 호환성을 체크합니다.updateCount: DB row, 즉 객체가 몇

2024년 1월 31일
·
0개의 댓글
·