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

pym7857님의 프로필 이미지

작성한 질문수

React로 NodeBird SNS 만들기

6-12. 게시글 이미지 표시하기

post.Images에 대해 질문드립니다.

20.05.24 15:06 작성

·

118

0

항상 질문에 대한 답변을 빠르게 해주셔서 감사합니다 제로초님~

강의를 듣다 궁금한게 생겨 질문 3개 정도를 드리려 합니다. 

■[질문 1]

강의 처음~1분대 쯤에 

(PostCard.js)

cover={post.Images[0&& <img alt="example" src={ `http://localhost:3065/${post.Images[0].src}` />}

이 부분에서 post.Images라는 속성을 사용했는데, 

이처럼 post.Images라는것이 가능한 이유가 

routes/post.js에서 

await newPost.addImages(images);

위와 같이 (sequelize에서 post테이블과 image테이블의 관계를 보고 제공하는) addImages()라는 메서드가 post객체에 images라는 속성을 만들었기 때문이라고 보면 되나요 ?

즉, addImages()라는 메서드가 사용될때, post.Images가 가능해지는것인지가 궁금합니다.  

■[질문2]

(routes/post.js)

/* 방법2: db에서 불러와서 프론트로 전달 */
        const fullPost = await db.Post.findOne({
            where: { id: newPost.id },
            /* include: 게시글 불러올때 user정보와 image정보도 같이 불러온다. */
            include: [{
                model: db.User, // 게시글과 연관된 사용자만 가져온다. (=게시글과 연관된 사용자는 글쓴이 딱 한명이다.)
                                // include를 이렇게 '명시'해주면, Post에 User라는 속성을 달아줌.
                                // -> (PostCard.js) post.User.nickname[0].. 이런식으로 사용가능 !!
            }, {
                model: db.Image,    // 프론트에서 Post.Image 로 사용가능 
            }],
        });

위와 같이 include속성을 사용할때 역시, post객체에 Image라는 속성이 만들어지는건가요 ? 

즉, 이렇게 include 로 선언했을때도 post.image가 가능해지는것인지 궁금합니다.

■[질문 3]

addHashtag()나 addImage()같은 메서드는 sequelize에서 관계를 보고나서 알아서 만들어주는 메서드라고 하셨는데, 

예를들어 models/post.js에서

// 관계 설정 
    Post.associate = (db) => {
      db.Post.belongsTo(db.User); // belongsTo: 테이블에 UserId 컬럼이 생겨요
      db.Post.hasMany(db.Comment);
      db.Post.hasMany(db.Image);
      db.Post.belongsTo(db.Post, { as: 'Retweet' }); // Post,Post 테이블 이름 똑같아서, 구별 안될때는 as
                                                      // belongsTo: 테이블에 RetweetId 컬럼이 생겨요
      db.Post.belongsToMany(db.Hashtag, { through: 'PostHashtag' });
      db.Post.belongsToMany(db.User, { through: 'Like', as: 'Likers' });
    };

위와같이 관계가 설정되어있는데, post와 image가 hasMany로 연결되어있는것을 확인할 수 있는데요. 

이때, sequelize에서 addImage() 매서드를 만들어주는것은 이해가 되는데, 복수형인 addImages() 메서드도 이때 같이 만들어지는건가요?

즉, 항상 복수형 메서드도 같이 만들어지는것인지 궁금합니다.

답변 1

1

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

2020. 05. 24. 21:10

1. add한건 연결만 한 것이고 post.Images는 include image를 했기때문에 불러올 수 있었습니다.

2번 답도 되었네요. include가 객체로 만드는 역할입니다.

3번은 다대다나 1대다 관계에서는 단수형 복수형이 만들어집니다. 1대1관계에서는 복수형이 없겠죠?

pym7857님의 프로필 이미지

작성한 질문수

질문하기