[세션 10] FindOne 함수 이용해서 하나의 데이터만 찾기에서
115
작성한 질문수 1
http://localhost:3000/posts/:id 를 send하게되면
NotFoundException()이 실행이 되야하는데

이런 에러가 나옵니다
async getPostById(id: number) {
const post = await this.postsRepository.findOne({
where: {
id,
},
});
if (!post) {
throw new NotFoundException();
}
return post;
}잘 입력한 것 같은데 . 왜그런가요?
답변 2
0
안녕하세요!
에러를 분석할때는 항상 에러 메세지를 이해 해야합니다.
NaN 에러는 "숫자가 아닌 값을 숫자가 필요한 위치에 넣었을때 생기는 에러"입니다.
그러니 코드만 봐서는 절대로 알 수 없는 에러죠.
에러가 발생하는 위치에서 실제 어떤 값을 입력하고 있는지 확인 해보세요 (출력등).
숫자가 입력돼야하는 곳에 숫자 아닌 다른 값을 넣으셨을겁니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 함지현님.
작성하신 코드와 에러 메시지를 통해 문제를 파악해 보겠습니다. 현재 나타나는 에러는 ‘NaN’(숫자가 아님)이라는 값이 id로 전달되어 PostgreSQL에서 integer 유형으로 인식하지 못해 발생하는 것 같습니다.
문제 원인
에러 메시지로부터, getPostById 함수의 id 파라미터가 숫자가 아닌 값으로 호출되고 있음이 추정됩니다. 실제로 해당 값이 NaN일 때, 데이터베이스 쿼리가 실패하게 됩니다. 이는 올바른 숫자를 기대하는 쿼리에 잘못된 파라미터를 전달했기 때문입니다.
해결 방법
- 유효성 검사 추가:
id가 숫자인지 확인하고, 만약 숫자가 아니라면 직접적으로 에러를 발생시켜 주도록 하세요.
예를 들어 TypeScript에서는 다음과 같이 구현할 수 있습니다:
async getPostById(id: any) {
const parsedId = parseInt(id, 10);
if (isNaN(parsedId)) {
throw new BadRequestException('Invalid ID format');
}
const post = await this.postsRepository.findOne({
where: {
id: parsedId,
},
});
if (!post) {
throw new NotFoundException();
}
return post;
}
- 라우팅 경로 및 파라미터 검증: 요청 경로와 전달되는 파라미터가 올바른 타입인지 미리 검증합니다. Express.js 또는 NestJS에서 라우팅 경로를 설정할 때, 타입스크립트에서 자동 타입 검사를 활용하여 이와 같은 문제를 예방할 수 있습니다.
관련된 내용은 아래 링크를 참고할 수 있습니다:
- [NestJS] HTTP 파라미터 검증 - Param Decorator 사용법
- [NestJS] 데이터 전송 시 유효성 검사 방법
위 두 가지 조치가 문제를 해결하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
cascade 질문
0
44
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
53
1
process.env port key 에러
0
51
1
추상화
0
52
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
105
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
57
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
74
1
app.controller app.service 는 지워도되나요?
0
70
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
81
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
69
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
105
2
socket connect 오류
0
101
2
강의를 들으면서 궁금한 점
0
100
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
64
2
커리큘럼 질문
0
101
2
put 요청은 언제
0
92
3
typeorm VS prisma
0
355
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
79
2
User 데코레이터 버그 수정 전달드립니다.
0
70
1
git 주소 부탁드립니다.
0
115
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
86
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
150
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





