아무래도 하나 덜 쓰는 @GET('user')
로 사용하도록 하자
// create
@Post()
// read
@Get()
// update
@Patch()
// delete
@Delete()
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 단에서 getTests
를 query=null
인 경우로 취급하여 처리해주어야한다.
더 좋은 방법이 있다면 업데이트를 해야겠다.
[NestJS Query & Route Params] https://javascript.plainenglish.io/nestjs-tutorial-query-route-params-221cc8000518
// 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
유익한 글 잘 봤습니다, 감사합니다.