[Sequelize] Joinํ๊ธฐ
์ํ๋ผ์ด์ฆ์ ORM ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด JOIN ๋ฑ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
ํ ์คํธ ํ ์ด๋ธ์ ์ด๋ ๋ค.
ํฌ์คํธ๋ฅผ ๋ํ๋ด๋ Post์, ๊ทธ ํฌ์คํธ์ ๋ฌ๋ฆฐ ๋๊ธ์ ํํํ๋ ๋ชจ๋ธ Comment๋ค.
Comment๋ ์ธ๋ํค postId๋ก Post์ Id๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋์ ํฌ์คํธ์๋ ์ฌ๋ฌ๊ฐ์ ๋๊ธ์ด ๋ฌ๋ฆด ์ ์์ผ๋ฏ๋ก 1:N ๊ด๊ณ๋ค.
๊ทธ๋ฌ๋ ์๋์ ๊ฐ์ด hasMany๋ก ๊ด๊ณ๋ฅผ ๋ช
์ํด์ฃผ๋ฉด ๋๋ค.
์ด์ธ์๋ ๊ด๊ณ ์ค์ ๋ฉ์๋์ hasOne, belongtoTo, belongtoToMany ๋ฑ์ด ์๋๋ฐ
hasOne์ 1:1์ ํํํ๋ ๋ฉ์๋๊ณ ,
belongsTo๋ ๋ฐ๋๋ก ์ฐธ์กฐ๋๋ ์
์ฅ์์ ์์๋๋ ๊ฒ์ ํํํ๋ค. ๊ฐ๋ น ์์ ๊ฒฝ์ฐ์ Comment.belongsTo(Post)๋ก ํํํ ์๋ ์๋ค.
๊ทธ๋ฆฌ๊ณ belongsToMany๋ N:M ๊ด๊ณ๋ฅผ ํํํ ๋ ์ฐ๋๋ฐ.. ์ธ์ผ์ด ์์ฃผ ์์์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
ํ ์คํธ๋ฐ์ดํฐ๋ ๋์ถฉ ์ด๋ ๊ฒ ๋ฃ์ด๋จ๋ค.


๊ทธ๋ฆฌ๊ณ ์กฐ์ธ์ ํ๋ ค๋ฉด ๊ทธ์ find ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ include ์ต์ ์ ๋ฃ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค!
ํ๋๋ฉด ๊ทธ๋ฅ ์ค๋ธ์ ํธ ํ๋๋ง ๋ฃ์ด์ค๋ ๋์ง๋ง ์ฌ๋ฌ๊ฐ๋ฅผ ๋ฃ์ ์๋ ์๋ค.
model์ ๋ง ๊ทธ๋๋ก ์กฐ์ธ์ผ๋ก ๊ฐ์ ธ์ฌ ๋ชจ๋ธ, attributes๋ ์กฐ์ธํด์ ๊ฐ์ ธ์ฌ ๊ฐ๋ค์ด๋ค. attribute์ ๋ฐฐ์ด์ ๋ค์ ๋ฃ๋๊ฑด as๋ก ์ปฌ๋ผ๋ช
์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๊ณ ...
๊ทธ๋ ๋ค.
์ด๋ฐ์์ผ๋ก ์ง๋๋ฉด Post์ ์ปฌ๋ผ์ ๊ทธ๋ฅ ์ ๋ค์ด์ฌ ๊ฒ์ด๊ณ ,
Comment๋ hasMany๋ก ๊ด๊ณ๋ฅผ ๊น์๋์ผ๋ ๋ฐฐ์ด๋ก ๋ค์ด์ฌ ๊ฒ์ด๋ค.
์ฟผ๋ฆฌ์์ ๋ฐ๋ก ๊ทธ๋ฃน์ ๊ฑธ์ง ์์ง๋ง ์ํ๋ผ์ด์ฆ ์์์ ์ ์ฒ๋ฆฌํด์ค๋ค.
์ด๋ฐ์์ผ๋ก ์ฐ์ด๋ณผ ์ ์๊ฒ ๋ค.
์์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ฐ๋ ๊ทธ๋ฅ ํ๋์ ๊ทผ์ผ๋ก ์๋ ๋๊ฐ ์์ด์, ๊ทธ๋ด ๋๋ get ๋ฉ์๋๋ dataValues ํ๋กํผํฐ๋ฅผ ํตํด ์ ๊ทผํด์ผ ํ๋ค.
๊ทธ๋ ๋ค.
์ฐธ์กฐ
https://sequelize.org/master/manual/assocs.html
https://velog.io/@cadenzah/sequelize-document-4