[NestJS] CRUD

Younghwan Cha·2023년 7월 19일
0

Nest.js

목록 보기
3/27
post-thumbnail

Convention

  1. @GET('/user') vs @GET('user')

아무래도 하나 덜 쓰는 @GET('user') 로 사용하도록 하자

  1. CRUD
// create
@Post()

// read
@Get()

// update
@Patch()

// delete
@Delete()

READ


순서

BODY

PATH

QUERY

Query param 을 사용하는 경우에 내가 했던 실수를 기록해보려한다.
아래 상황을 보자

// test.controller.ts
@GET()
getTests() {
  return this.testService.getTests();
}

@GET()
getTestByName(
  @Query('name') name: string
) {
  return this.testService.getTestByName(name);
}

무엇이 잘못되었을까?

상단과 같이 구현될 경우 getTestByName 에는 접근 할 수 없다
반대의 경우는 어떨까?

// test.controller.ts
@GET()
getTestByName(
  @Query('name') name: string
) {
  return this.testService.getTestByName(name);
}

@GET()
getTests() {
  return this.testService.getTests();
}

위와 같이 순서를 바꿀 경우에는 getTests 에 접근이 불가능하다
Nest.js 에서는 위에서부터 순서대로 읽으며 요청이 메소드에 해당되는지 확인하는 데, 두 경우 모두 상단에서 걸리기 때문에 아래 메소드로의 접근이 불가능한 것이다.

그렇다면 Query param 을 사용하려면 어떻게 구현해야 할까?

// test.controller.ts
@GET()
getTestByName(
  @Query('name') name: string
) {
  return this.testService.getTestByName(name);
}

// test.service.ts
getTestByName(name: string) {
  return name
  	? // return user with ${name}
  	: // return all users
}

위와 같이 service 단에서 getTestsquery=null 인 경우로 취급하여 처리해주어야한다.
더 좋은 방법이 있다면 업데이트를 해야겠다.

[NestJS Query & Route Params] https://javascript.plainenglish.io/nestjs-tutorial-query-route-params-221cc8000518

DELETE

// remove - 주어진 엔티티를 지운다
this.repository.remove(entity) 
this.repository.softRemove(entity)

// delete - 조건으로 지운다
this.repository.delete({id: id}) 
this.repository.softDelete({id: id})

https://velog.io/@phw3071/TypeOrm-remove-%EC%99%80-delete-%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://insubkim.tistory.com/298

profile
개발 기록

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

유익한 글 잘 봤습니다, 감사합니다.

답글 달기