Node.js/Nest.js

[Nest.js] ERROR [ExceptionsHandler] invalid input syntax for type integer

후뿡이 2023. 6. 3. 22:51

 🎯 문제 상황


//Nest.js Controller 코드

@Get('/:id')
getRecord(@Param() id:number): Promise<Record> {
  return this.recordsService.getRecordById(id);
}

//Nest.js service 코드
async getRecordById(id:number): Promise<Record> {
    const record = await this.recordsRepository.findOneBy({id});
    if (!record) {
        throw new NotFoundException();
    }
    return record
}

 

Postman을 통해 위의 코드에 Get request를 보내면

"ERROR [ExceptionsHandler] invalid input syntax for type integer" 이라는 오류를 얻었다.

뭔 소리고 ...

 

무슨 소린가 싶어서 consol.log(id,typeof(id))를 찍어보니

이런 결과를 얻었다.

 

나는 당연히 @Param() id:number 로 받은 id 값이 int일줄 알았는데 이게 무슨 일이지 ?

 

 

 🎯 문제 해결


@Param() 은 사용자가 보낸 request의 모든 파라미터 값을 가지고 온다 ! 

나는 거기서 id 값만 필요하므로

 

@Param('id') 를 통해 필요한 파라미터 값만 꺼내오자 !

 

@Get('/:id')
getRecord(@Param('id') id:number): Promise<Record> {
  return this.recordsService.getRecordById(id);
}

 

포스트맨을 통해 확인해보니 아주 정상적으로 동작하고 있음을 알 수 있다 !!!