강의

멘토링

커뮤니티

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

재원허님의 프로필 이미지
재원허

작성한 질문수

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

게시글 좋아요

시퀄라이즈 질문입니다!

작성

·

173

0

    const fullPost = await Post.findOne({
      where: { id: post.id },
      include: [{
        model: Image,
      }, {
        model: Comment,
        include: [{
          model: User, // 댓글 작성자
          attributes: ['id', 'nickname'],
        }],
      }, {
        model: User, // 게시글 작성자
        attributes: ['id', 'nickname'],
      }, {
        model: User, // 좋아요 누른 사람
        as: 'Likers',
        attributes: ['id'],
      }]
    });

노드 서버에서 fullPost를 보내주는데 이때 게시글 작성자는 User 이름으로 좋아요나 댓글 작성자는 Likers, Comments 이름으로 보내지는 것으로 확인되는데 이게 User는 무조건 로우가 하나인 객체 값을 가지고 Likers, Comments는 배열로 객체 요소를 여러 개 가져서 시퀄라이즈에서 자동으로 's'를 붙여서 보내는 식으로 이해하면 될까요??

p.s. 질문하면서 생각이 난건데 시퀄라이즈에서 관계를 정의할 때 Post는 User(게시글 작성자)에 대해 belongsTo이고,
Likers, Comments, Images 같은 경우는 belongsToMany이거나 hasMany이기 때문에 시퀄라이즈에서 's'를 붙여서 보내고 배열 형태로 객체 요소들을 넣어서 보내는 것이라고 이해하면 될까요?

아래 mainPosts 요소 하나 올립니다!

답변 1

2

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

자동으로 s를 붙이는 건 아니고요. 제가 belongsToMany같은데 as를 Likers로 해서 그대로 나오는 겁니다. 배열인 이유는 말씀하신게 맞습니다. 이름만 복수형이되도록 잘 만들어두면 됩니다.

재원허님의 프로필 이미지
재원허
질문자

그러면 as가 사용하지 않았고 Post 모델이  Comments나 Images 모델을 hasMany하는 경우는 자동으로 's'가 붙어서 프론트로  데이터를 보내는 건가요?? 

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

아 네네 그건 맞습니다.

재원허님의 프로필 이미지
재원허
질문자

답변 감사합니다!:)

재원허님의 프로필 이미지
재원허

작성한 질문수

질문하기