반응형
sequelize에서 조인을 할때는 include를 사용해서 다음과 같이 한다.
1 2 3 4 5 6 | await This.User.findOne({ attributes: ['id', ['name', 'userName']], include: [ { model: this.Dept} ] }); | cs |
물론 기존에 Model을 define할 때 연관관계를 설정을 해놓은 상태여야 하고 이렇게 할 경우에 나는 left join이 아니라 inner join으로 다음과 같이 되었다.
SELECT id, name as userName FROM User u inner join Dept d on u.userId = d.userId;
그래서 검색해서 알아보다보니 required 옵션을 부여하게 되면 정상적으로 left join이 된다고 알게되었다.
그래서 붙이니 정상적으로 되었다.
1 2 3 4 5 6 | await This.User.findOne({ attributes: ['id', ['name', 'userName']], include: [ { model: this.Dept, required: false} ] }); | cs |
별개로 조인을 하려고 하는데 계속 서브쿼리가 만들어진다면 subquery:false 옵션을 주면 문제를 해결 할 수 있다.
반응형
'web > node.js' 카테고리의 다른 글
Nginx, Apache 그리고 node.js 성능 관련 잡다한 정리 (0) | 2019.02.07 |
---|---|
sequelize에서 상황에 따라 조인 테이블을 변경하는 방법 - alias (0) | 2018.12.19 |
sequelize에서 alias 사용하여 검색하는 방법 (0) | 2018.12.19 |
sequelize 사용시 테이블 이름 변동없이 고정 Alias 사용방법 (0) | 2018.12.19 |
sequelize에서 timezone 설정 추가 (1) | 2018.11.26 |