[JS]typeorm의 findOneOrFail

여리·2023년 10월 25일
0

블로그 작성의 기준은 JS nestjs와 typeorm으로 작업을 기반으로 작성했어용.

nestjs로 typeorm을 사용하면서 늘 써왔던 메소드 findOne을 사용하다가 그 아래 있는findOneFail에 대한 메소드를 보고 팀원분과 궁금증이 생겨 사용해보고 그 기록을 남기고자 블로그!

✅ findOne method

  • 지금까지 경험이 많지는 않지만 user를 기반으로 하는 서비스의 경우에서 typeorm을 사용한다면 findOne은 대부분 많이 사용하지 않을까라는 생각이 든다.
    예시코드를 보자면
const user = await this.userRepository.findOne(user.id)
						.where('userId="${user.id}"')

//찾고자 하는 유저가 없는경우
if(!user){
  	throw new HttpExeption('message','HttpStatus.BAD_REQUEST 또는 NOT_FOUND')
}

이런느낌일 수 있을것 같다.

✅ findOneOrFail

  • 해당 메소드에 대해서 사용해본 적이 없었지만 의미에 대해서 추측하고 사용을 하게 되었다.
    의미는 아주 직관적이었다. findOne()을 사용하고 해당 값을 찾지 못한 경우에 에러를 throw 시키는 기능이었다.
const user = await this.userRepository.findOneOrFail(user.id)
						.where('userId="${user.id}"')

//findOneOrFail에서 user.id가 undefined이면 에러를 던진다.

위의 이미지로 진행을 하게되면 user.id=123542543이 되고 DB에 값이 없다면 undefined를 반환한다.

여기서 findOne()이 아닌 findOneOrFail()을 사용하게 된다면?!

이렇게 에러를 발생시킨다.

정리를 해본다고 했을때 findOneOrFail()을 사용하게 되는 경우에는 findOne()을 추가적인 옵션없이 error을 발생시키고자 할때 throw될 수 있도록 하는데 의도가 있는것으로 생각된다.

여러가지 메소드들에는 쓸모가 있다. 어떻게 활용하느냐에 따른 부분이기 때문에 효율성 있는 선택이 중요한것 같다.

profile
beckend developer

0개의 댓글