inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

6-4. 해시태그 검색, 유저 정보 라우터 만들기

sequelize의 include 속성에 대한 질문입니다.

466

pym7857

작성한 질문수 15

0

sequelize의 include 속성에 대한 질문입니다.

가령, models폴더안의 post.js를 보면,

post와 user, comment, image, hashtag등등이 Post.associate()라는 함수에서 관계가 정의되어있는데..

질문1)

이렇게 관계가 서로 정해진것들끼리'만' include가 가능한거 맞나요?

좀더 구체적으로 질문을 드리자면, 관계를 정의할때 '1대1' 또는 '1대다' 또는 '다대다' 등등 어떤 관계로 정의를해도 관계만 맺어져있다면 include가 사용가능한것인지 궁금합니다!

질문2) 

models/hashtag.js의 Hashtag.associate에서 Hashtag와 Post의 관계가 다대다로 설정되어있는것을 확인할수있는데,

(routes/hashtag.js)

const posts = await db.Post.findAll({
            include: [{
                model: db.Hashtag,  // 게시글 가져올때 해시태그도 함께 가져오도록.
                where: { name: decodeURIComponent(req.params.name},   // decodeURIComponent(): tag에 한글이 들어오면 URIComponent로 감싸지게 되므로, 그것을 decodeURI 
            }],
        });

여기서 include의 의미가 제대로 이해가 되지않아서 질문드립니다.

조금더 구체적으로 질문을 드리자면...

(models/hashtag.js)

// 관계 설정 
    Hashtag.associate = (db) => {
      db.Hashtag.belongsToMany(db.Post, { through: 'PostHashtag' });
    };
    return Hashtag;

위 관계설정 부분에서 '다대다'로 설정을 했고, through를 통해, 'PostHashtag' 라는 테이블이 새로 생겼는데,

mySQL 워크벤치에서 바로 이 'posthashtag'테이블의 필드들을 살펴보면, 'HashtagId'와 'PostId'가 있는것을 확인할 수 있는데요!

그렇다면, 위 첫번째 사진의 include부분에서 req.params로 넘어온 tag name을포함하는 hashtag가 있고, (이부분은 mySQL hashtags테이블의 name필드와 일치하는것 같습니다)

이 hashtag가 posthashtag테이블의 PostId필드에 들어간 후, 그 PostId를 포함하는 post를 최종적으로 뽑아낸게 바로, 첫번째 사진의 const posts = {} 객체 라는건가요 ??? 

너무너무너무 헷갈립니다 ㅠㅠㅠ 저 include라는 의미가 어떤 순서로 작동을 해서 포함관계가 되는것인지 정말 모르겠어서 질문드려요 ...ㅠㅠ

react javascript

답변 1

1

제로초(조현영)

belongsTo나 hasMany, hasOne, belongsToMany를 지정해준 것들끼리만 include가 가능합니다.

다대다 관계는 중간 테이블이 있어서 헷갈리시는 것 같은데요. hashtag id가 있으면 posthashtag테이블에서 hashtag id와 짝지어지는 post id들이 있을 것입니다. 걔네들이 Posts 배열로 바뀌어서 들어갑니다.

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

482

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

447

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

433

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

975

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1