TypeOrm으로 Postgresql 이용 도중 Select 문을 사용하다가 발견한 에러이다.
driverError: error: column "a.createdAt" does not exist
code: '42703' error
let query = this.articleRepository
.createQueryBuilder('a')
.select([
'a.id as id',
'a.title as title',
'a.createdAt as createdAt',
]);
...
query = query.orderBy('createdAt', 'DESC');
게시글 목록을 불러오기 위하여 대충 위처럼 코드를 짰다. (완전 똑같지는 않다)
그런데, as를 썼는데 return 값이 createdAt이 아닌 createat으로 소문자로 나오는 게 문제였다.
그래서 해결방법을 찾았다. 그것은 바로 따옴표를 붙이는 것
let query = this.articleRepository
.createQueryBuilder('a')
.select([
'a.id as "id"',
'a.title as "title"',
'a.createdAt as "createdAt"',
]);
...
query = query.orderBy('createdAt', 'DESC');
그래서 위처럼 코드를 변경했다. 그런데....
driverError: error: column "a.createdAt" does not exist
라는 에러가 계속 발생하였다. 그래서 뭐가 문제지 하고 코드를 이것저것 살펴본 결과
orderBy가 문제였다.
그래서 아래와 같이 orderBy에 따옴표를 붙여주면 된다. (왜 자동으로 안 붙여주는지 모르겠다 ㅠ)
let query = this.articleRepository
.createQueryBuilder('a')
.select([
'a.id as "id"',
'a.title as "title"',
'a.createdAt as "createdAt"',
]);
...
query = query.orderBy('"createdAt"', 'DESC');
나는 변수 사용을 위해 백틱을 써서 query.orderBy(`${order.type}`, `${order.order}`);
와 같이 사용했었는데 어쩌면 백틱때문일지도 모른다.
'Back-end > nest.js' 카테고리의 다른 글
Nest.js : Controller url 오류 (컨트롤러 경로 오류, 에러) (0) | 2023.06.19 |
---|---|
Nest.js : Prisma의 Date Return type 문제 (Prisma date to string) (0) | 2023.06.16 |
Nest.js : Session을 이용한 Google OAuth 구현 (0) | 2023.03.05 |
Nest.js : Ports and Adapters Architecture 구현하기 (3) - Test (0) | 2023.02.26 |
Nest.js : Nest.js로 Redis와 연동하여 세션 로그인 구현하기 (2) (0) | 2023.02.23 |