2024. 7. 25. 15:27ㆍNestJs
서론
admin 권한으로 user 권한인 유저들의 신고 목록을 조회하는 기능을 개발하던 중 "Unknown column '' in 'where clause'"라는 에러가 발생했습니다. 이 문제는 클래스 객체 안에서 코드를 최상단으로 이동시키는 방법으로 해결할 수 있었습니다.
에러 발생
문제 코드
@UseGuards(JwtAccessGuards, RolesGuard)
@Roles(UserRoles.ADMIN)
@Get("admin")
async adminReport(@Query("page") page: number, @Query("limit") limit: number) {
page = page && page > 0 ? page : 1;
limit = limit && limit > 0 ? limit : 20;
const { reports, pagination } = await this.reportsService.adminReport(page, limit);
return {
statusCode: HttpStatus.OK,
message: "유저 신고 목록 조회에 성공하였습니다.",
data: reports,
meta: pagination,
};
}
문제 원인
라우팅 순서와 와일드카드 라우터의 충돌로 인해 다른 메서드가 잘못 호출된 것으로 보입니다. 특히, :id와 같은 와일드카드 라우트를 위에 선언할 경우, 특정 라우트가 예상치 못한 방식으로 매칭되어 발생하는 문제였습니다. 클래스 안에서 admin 관련 라우트를 하단에 두었더니 이 충돌이 발생했습니다.
해결 방법
구글링을 통해 Stack Overflow에서 관련 문제를 찾았습니다. 해결 방법은 :id 와일드카드 라우트를 상단에 위치시키지 않도록 하여 라우트의 우선순위를 조정하는 것이었습니다. 따라서, admin 관련 라우트를 클래스 최상단으로 이동시켜 문제를 해결했습니다.
@Controller('reports')
export class ReportsController {
// 최상단에 admin 라우트를 배치하여 우선순위 조정
@UseGuards(JwtAccessGuards, RolesGuard)
@Roles(UserRoles.ADMIN)
@Get("admin")
async adminReport(@Query("page") page: number, @Query("limit") limit: number) {
page = page && page > 0 ? page : 1;
limit = limit && limit > 0 ? limit : 20;
const { reports, pagination } = await this.reportsService.adminReport(page, limit);
return {
statusCode: HttpStatus.OK,
message: "유저 신고 목록 조회에 성공하였습니다.",
data: reports,
meta: pagination,
};
}
// 다른 라우트들을 그 아래에 배치
@Get(':id')
async getReport(@Param('id') id: string) {
// 구현 내용
}
// 추가 라우트들
}
참고자료
TypeORM / MySQL - QueryFailedError: Unknown column 'NaN' in 'where clause'
I need help. I'm developing an API using Express and NodeJS with TypeScript, and I'm using TypeORM for database operations. I'm trying to create a function where I list and return all the appointme...
stackoverflow.com
'NestJs' 카테고리의 다른 글
[NestJS] google-cloud-text-to-speech vs AWS Polly 차이점 & 사용법 (4) | 2024.10.01 |
---|---|
[NestJS] Postman auth에 토큰 보내기 (0) | 2024.08.07 |
[NestJS] Faker 연동 (0) | 2024.07.23 |
[NestJS] AWS S3에 파일 업로드 @aws-sdk/client-s3 (0) | 2024.07.15 |
Restful한 API 설계 규칙 (0) | 2024.07.12 |