강의

멘토링

커뮤니티

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

NOAH님의 프로필 이미지
NOAH

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

게시글 불러오기

sequelize 명령어 관련

작성

·

161

0

강의 듣는 도중에 include 명령에 대해서 궁금증이 생겨서요.

      const fullUserWithoutPassword = await User.findOne({
        where: { id: req.user.id },
        attributes: {
          exclude: ['password'],
        },
        include: [
          { model: Post, attributes: ['id'] },
          { model: User, as: 'Followings', attributes: ['id'] },
          { model: User, as: 'Followers', attributes: ['id'] },
        ],
      });

    const posts = await Post.findAll({
      limit: 10,
      order: [['createAt''DESC']],
      include: [{ model: User }], // 작성자 정보
   });

include 할 때 model: User, Post 혹은 Comment

이런식으로 하여 부가적인 데이터를 같이 불러오는데요. 이게 처음에 models 들을 만들때 associate에서 설정한 관계를 토대로 알아서 시퀄라이즈에서 맞는 정보를 불러와주는거죠?

예를 들면 posts에서 User를 불러오면 post는 user에 1 대 다 관계로 belogsTo 되어있으므로 post에 속해있는 user의 id를 토대로 정보들을 가져온다.

이런식으로요. 이것도 확실하게 하고 싶어 검색 후 여쭤봅니다. 감사합니다.

답변 2

1

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

네, associate가 제대로 되어있어야만 include로 불러올 수 있습니다. as를 사용하는 경우 include에서도 as 이름이 정확하게 일치해야 합니다.

0

NOAH님의 프로필 이미지
NOAH
질문자

하나만 더 여쭤보겠습니다. 

    const fullPost = await Post.findOne({
      where: { id: post.id },
      include: [
        { model: Image },
        { model: Comment },
        { model: User, attributes: ['id''nickname'] },
     ],

이렇게 시퀄라이즈에서 db에 있는 정보를 찾거나 생성을 할때 const fullPost에 넣어주는데요. 그럼 이 의미는 시퀄라이즈에서 db쿼리를 사용 할 때 항상 생성되거나 찾거나 한 데이터들을 객체로 return 해주는건가요?

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

하나를 찾으면 객체고, 없으면 null입니다. 여러 개를 찾으면 배열로 나옵니다.

NOAH님의 프로필 이미지
NOAH

작성한 질문수

질문하기