인프런 커뮤니티 질문&답변

Inpa Skyrim님의 프로필 이미지
Inpa Skyrim

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

multer 사용하기

급작스러운 시퀄라이즈 질문 있습니다.

작성

·

225

0

const posts = await Post.findAll({
         include: {
            model: User,
            attributes: ['id', 'nick'],
         },
         order: [['createdAt', 'DESC']],
      });

 

1. 저거를 sql문으로 표현하면

select * 
from posts
left join users
on posts.id = users.id
order by posts.createdAt desc;

 

맞나요?

2. 시퀄라이즈문법 include안에 attributes를 선언한 이유가, sql은 외래키 연결되어있으면 그냥 join만 하면 알아서 키가 연결되서 조인되는데,
시퀄라이즈는 직접 외래키연결된 키를 명시해야되서 쓰는건가요? 

3. 2번 질문이 정답이라면 nick은 왜 쓴건가요?
로그를 보니 그냥 전체 필드들을 다 가져오던데..

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1 두 부분 다릅니다.

select users.id, users.nick, posts.컬럼...

on posts.userId = users.id

2. attributes는 외래키가 아니라 select 부분입니다. include 안의 attributes는 조인테이블에서 가져올 컬럼입니다.

Inpa Skyrim님의 프로필 이미지
Inpa Skyrim

작성한 질문수

질문하기