왜 이 두 표현의 차이점이 이제야 보이기 시작했을까?는 의문이다. (그냥 모르고 갖다 쓴거지 뭐)
.createQueryBuilder('popup')
.leftJoinAndSelect('popup.popupMultilingualTables', 'multilingual_table')
.where('popup.language = :language', { language })
.andWhere('popup.is_active = true')
여기서 보이는 where절과 andWhere절에서 = :language로 쓰느냐, = 로 쓰느냐는 의미가 다르다.
1) popup.language = :language의 경우 뒤에 두번째 인자(파라미터)로 language가 온다.
즉, 파라미터가 있을 경우에 = : 라는 표현을 써주는 것이다. '바인딩 변수'이다. 동적인 값을 쿼리에 주입할 때 사용한다.
:language가 바인딩 변수고, 실제 값을 바인딩하기 위해 사용된다. { language }는 이 변수에 할당할 실제 값을 나타낸다.
language가 어딘가에 정의되어 있어야하며, 해당 변수의 값을 바인딩 변수에 할당하여 실제 SQL 쿼리를 생성할때 사용된다.
2) popup.is_active = true의 경우 is_active의 상태가 true일때 라는 의미의 SQL 연산자에서 = 는 '비교 연산자'
'Backend > PostgreSQL and TypeORM' 카테고리의 다른 글
fidOne()과 FindOneOptions 객체 (0) | 2023.08.18 |
---|---|
Module '"nestjs-typeorm-paginate"' has no exported member 'IPaginationOptions'. (0) | 2023.08.17 |
role does not exist (0) | 2023.08.09 |
Local DB 연결방법 (0) | 2023.07.03 |
SQL table 만들고 id 생성(PK) (0) | 2023.04.04 |