[Sequelize] ์Šค์ฝ”ํ”„ (sequelize-typescript)

[์›๋ณธ ๋งํฌ]

์Šค์ฝ”ํ”„๋Š” find์˜ ํ˜•ํƒœ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์ด ์žˆ๊ณ , ๊ทธ์— ๋Œ€ํ•œ findOne์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ์น˜์ž.

๋ณ„๋‹ค๋ฅธ ์„ค์ •์„ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋ธ ๋‚ด์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ๊ฐ’์ด ๋ฟŒ๋ ค์งˆ ๊ฒƒ์ด๋‹ค.

์ž˜ ๋‚˜์˜ค๊ธฐ๋Š” ํ•˜๋Š”๋ฐ, ๋…ธ์ถœํ•˜๊ธฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด์ผ ์ˆ˜๋„ ์žˆ๋Š” ํŒจ์Šค์›Œ๋“œ ๊ฐ’ ๋“ฑ์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๋‹ค.
๋‹น์—ฐํžˆ ํŒจ์Šค์›Œ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฟŒ๋ ค์ฃผ๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฐ’๋“ค์— ์†ํ•˜๊ณ , ์„œ๋ฒ„ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

์ด๊ฑธ ์ผ๋‹จ ๊ธ‰ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด attribute ์†์„ฑ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.
๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ์ปฌ๋Ÿผ๋งŒ attributes ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋ฟŒ๋ ค์ค„๋•Œ๋งˆ๋‹ค ๊ณ„์† ์ด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜๋„ ์—†๋Š” ์ผ์ด๋‹ค.




์Šค์ฝ”ํ”„

๊ทธ๋Ÿผ ์ด์ œ ์Šค์ฝ”ํ”„๋กœ ์ด ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•ด๋ณด์ž.
ํ•œ ํ…Œ์ด๋ธ”์—๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์Œ์€ ์œ„์˜ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ์—ญํ• ์„ ํ•˜๋Š” view๋ผ๋Š” ์Šค์ฝ”ํ”„๋ฅผ ์ง€์ •ํ•œ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  find๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ scope๋กœ ๋ฐฉ๊ธˆ ์ •์˜ํ•œ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์ •ํ•˜๋ฉด

๋ฏธ๋ฆฌ ์ •์˜ํ•œ ๋Œ€๋กœ ์ปฌ๋Ÿผ๊ฐ’์ด ๋ฟŒ๋ ค์งˆ ๊ฒƒ์ด๋‹ค.

๋ฐฐ์ œ์ฒ˜๋ฆฌ๋„ ๊ฐ€๋Šฅํ•˜๊ณ 

attributes ์™ธ์˜ find ์˜ต์…˜๋“ค๋„ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์Šค์ฝ”ํ”„๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ์Šค์ฝ”ํ”„๊ฐ€ ์ ์šฉ๋˜๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
Scopes ๋Œ€์‹  DefaultScope ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.



์ฐธ์กฐ
https://sequelize.org/master/manual/scopes.html