블로그 작성의 기준은 JS nestjs와 typeorm으로 작업을 기반으로 작성했어용.
nestjs로 typeorm을 사용하면서 늘 써왔던 메소드 findOne
을 사용하다가 그 아래 있는findOneFail
에 대한 메소드를 보고 팀원분과 궁금증이 생겨 사용해보고 그 기록을 남기고자 블로그!
const user = await this.userRepository.findOne(user.id)
.where('userId="${user.id}"')
//찾고자 하는 유저가 없는경우
if(!user){
throw new HttpExeption('message','HttpStatus.BAD_REQUEST 또는 NOT_FOUND')
}
이런느낌일 수 있을것 같다.
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될 수 있도록 하는데 의도가 있는것으로 생각된다.
여러가지 메소드들에는 쓸모가 있다. 어떻게 활용하느냐에 따른 부분이기 때문에 효율성 있는 선택이 중요한것 같다.