Posts
Q&A
TypeORM + Mysql๊ด๋ จ ์ง๋ฌธ
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!@CreateDateColumn() { createdAt: any;}๋ถ๋ถ์ ๊ธฐ๋ณธ๊ฐ์ ๋ฃ์ด์ฃผ์ ์ผ ํฉ๋๋ค.@CreateDateColumn({ type: "timestamp", default: () => "CURRENT_TIMESTAMP(6)" }) @UpdateDateColumn({ type: "timestamp", default: () => "CURRENT_TIMESTAMP(6)", onUpdate: "CURRENT_TIMESTAMP(6)" })
- 0
- 1
- 431
Q&A
class-transform ๋ฐ์ฝ๋ ์ดํฐ๋ค ๋ผ๋ฆฌ์ ์คํ์์๊ฐ ๊ถ๊ธํฉ๋๋ค.
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!์ด ๊ฒ์ NestJS ์ ๋ณ๊ฐ๋ก TypeScript ์ ํน์ฑ์ ๋๋ค. NestJS ๊ณต๋ถ๋ฅผ ํ๋ฉด์ TypeScript ์ธํฐํ์ด์ค, ํด๋์ค, ๋ฐ์ฝ๋ ์ดํฐ ๋ฑ ๋ง์ ๊ณต๋ถ๋ฅผ ๊ฐ์ด ๋ณํ ํ๋ฉด ์ข์ต๋๋ค :)(์ฌ์ง)์ถ์ฒ ๋งํฌ
- 0
- 1
- 515
Q&A
๋ฉํฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ํ์ผ์ ์ ์ฅ๋์ง๋ง @uploadedFile()์์ ํ์ผ์ ๋ถ๋ฌ์ฌ ์๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!๋ค์๊ณผ ๊ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉฐ ์ฌ์ง ์์ผ๋ก๋ 1๋ฒ์ด ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ณด์ ๋๋ค.1. postman ํน์ฑ์ ๊ฐ๋์ฉ value์ ๊ฐ์ด ์์ด๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ ค๊ฐ ๋น ๊ฐ์ด ์ฌ๋ผ๊ฐ ๋๊ฐ ์์ต๋๋ค. ๋ค์ ์ฌ์ง์ ์ ๋ก๋ ํ๊ณ ์ฌ๋ ค๋ณด์ธ์!2. UploadedFile ์ UploadedFiles ๋ฅผ ์๋ง๊ฒ ์ผ๋์ง3. ํ๋ก ํธ์์ ์ฌ๋ฆฐ key์ value๊ฐ ๊ฐ์์ง ํ์ธ๊ทธ๋ฆฌ๊ณ ๋ฒ์ธ๋ก ์ํ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ ๋ body์ form ๋ฐ์ดํฐ์ raw/json๊ฐ์ ๋์์ ๋ด์ง ๋ชปํด์ ์ ๋ ๋จผ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ๊ณ ์ด๋ฏธ์ง์ url์ ์ฟ ํค๋ก ๋ณด๋ด์ด์ ์ํ ์ ๋ณด๋ฅผ ๋ง๋๋ ์ปจํธ๋กค๋ฌ์์ ์ฟ ํค์ ์๋ url๊ณผ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณด๋ด์ ์ํ ํ๋๋ฅผ ๋ง๋ญ๋๋ค. ํน์ ์ด๋ฐ๋ฐฉ๋ฒ์ด ์ค๋ฌด๋ฑ์์ ์ฐ์ด๊ฒ ๋๋์? ์๋๋ฉด ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์๊น์?-> ์๋น์ค์ ๋ฐ๋ผ ๋ค๋ฅด๋ ๋ณดํต์ ์ฌ์ง์ด ์๋ ๊ฒ์๋ฌผ ๊ฐ์ ๊ฒ์ ์ฌ๋ฆด ๋ ์ด์ ๊ฐ์ ์ ์ ํ๋ก์ฐ๋ฅผ ์๋๋ค.1. ๊ฒ์๋ฌผ ์์ฑ ํ์ด์ง2. ์ฌ์ง ์ ๋ก๋ -> ์ ๋ก๋ ํ์๋ง์ ์ ๋ก๋ api ํธ์ถ -> ํ๋ก ํธ์ ์ ๋ก๋๊ฐ ์๋ฃ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ค3. ๋๋จธ์ง body ๋ฐ์ดํฐ๋ค์ ๊ฒ์๋ฌผ ์์ฑ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฌ๋ผ๊ฐ
- 0
- 1
- 417
Q&A
PositiveIntPipe ์์ฑํ ๋ @Injectable() ์ฌ์ฉํ ์ด์
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!์์กด์ฑ ์ฃผ์ ์ ์์ผ๋ก์จ ๋ชจ๋๋ค์ ๊ด๊ณ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๊ธฐ ๋๋ฌธ์ ์ด๋ค.. ๋ผ๊ณ ์๊ณ ๊ณ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. NestJS ์ IoC ์ปจํ ์ด๋๊ฐ ๋ชจ๋ ๊ด๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ธ๋ฐ์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ์ง์ ์ฐ์ ๋ ๋๊ณ ์ํ์ ๋ ๋ฉ๋๋ค. ์ค๋ฌด์์๋ ์์กด์ฑ ์ฃผ์ ์ด ๋ง์์ง๋ฉด ์คํ๋ ค ๋ณต์กํ๋ค๊ณ ํ์๋ ๋ถ๋ค๋ ๊ณ์๊ณ , ์์ ์ ์ฐ์๋ ๋ถ๋ ๋ดค์ต๋๋ค. ๋ค๋ง ๊ณต์๋ฌธ์์๋ ์์กด์ฑ ์ฃผ์ ์ ํ๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ์์ ์ ์งํํ์ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 1
- 295
Q&A
๋ฐ์ฝ๋ ์ดํฐ ๊ด๋ จ ์ง๋ฌธ์ด ์์ต๋๋ค.
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!NestJS ๋ฅผ ์ํ๊ธฐ ์ํด์๋ ๋ฐ์ฝ๋ ์ดํฐ, ์ธํฐํ์ด์ค, ํด๋์ค์ ๋ํ TS ์ดํด๋๊ฐ ๋์์ผํ๋ ๊ณต๋ถํด๋ณด์๋ ๊ฒ์ ์ ๊ทน ์ถ์ฒ๋๋ฆฝ๋๋ค!์ง๋ฌธ1) ๊ทผ๋ฐ ํจ์1์ด๋ ํจ์2์ ๋งค๊ฐ๋ณ์ void์ธ๋ฐ? ๋ญ ๋ฐ๋๋ค๋ ๊ฑฐ์ฃ -> ๋ฐ์ฝ๋ ์ดํฐ๋ ํจ์์ด๋ฉฐ class , class field , class method , ํ๋ผ๋ฏธํฐ์ ๋ถ์ ์ ์์ผ๋ฉฐ ํ๋ผ๋ฏธํฐ๋ก void ๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ contructor(์์ฑ์) ๊ฐ ๋ค์ด๊ฐ๋๋ค. ๋ํ, method ์ field ๊ฐ์ ๊ฒฝ์ฐ 3๊ฐ์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋์ผ๋ก ๋ค์ด๊ฐ๊ฒ๋๋ฉฐ target, ๋ฉํ๋ฐ์ดํฐ, ์ค์ ๋ฑ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์!์ง๋ฌธ 2) ํจ์1์ด๋ ํจ์2 ๋ณด๋ฉด return์ ์ต๋ช ํจ์ ๋ฐ์๋จ๋๋ฐ ์ด๊ฒ ์ ์คํ๋๋ ๊ฑฐ์? ์ด๋์๋ ์ ๊ฑฐ ์คํํ๋ผ๋ ๊ฒ ์๋๋ฐ์? ๊ทธ๋๊น ํจ์1 return ์ต๋ช ํจ์ ๊ตฌ์กฐ๋ฉด ์ ์ด๋ ํจ์1()() ์ด๋ ๊ฒ ํด์ผ ์คํ๋์ง ์๋์ฉ?...-> ๋ฐ์ฝ๋ ์ดํฐ๋ ๋ถ์ด๋ ์๊ฐ ์ธ์คํด์คํ ์์ด๋ ๋ฐํ์์ ์๋ ์คํ๋ฉ๋๋ค.
- 0
- 1
- 275
Q&A
jwt passport ์ง๋ฌธ์ ๋๋ค
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์ ํด์ง ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์์ต๋๋ค. [๋งค๋์ table, ์ ์ table] ํน์ ํ๊ต๋ผ๊ณ ํ๋ค๋ฉด [ํ์table, ๊ตํํ์table] ๋ฑ ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ฑธ์ณ ๊ฒ์ฆ์ ํ๋ ๊ฒ์ ์ค๋ฌด์์ ๋ง์ด ์ฐ์ด๊ณ ์์ต๋๋ค.1. ์ธ์ (redis)๊ณผ ๊ฐ์ด ์ด์ฉ์ ํ๋ฉด์ ํด๋น jwt๊ฐ ์ด๋ค table์ ๋์จ ๊ฒ ์ธ์ง ๊ธฐ๋กํ๋ค.2. ์ผ์ผ์ด ๋ก๊ทธ์ธ, ์ฌ๋ก๊ทธ์ธ ํ ๋ ๋ง๋ค table ์ find ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ ํ์ธํ๋ค.3. ๋ jwt secret ํ๊ฒฝ๋ณ์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ์ด์ฉํ๋ค.๋ฑ ๋ง์ ๋ก์ง์ด ์์ต๋๋ค.
- 0
- 1
- 220
Q&A
forwardRef๋ ์ด๋ป๊ฒ ๋์ํ๋์?
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!A๋ชจ๋ -> B๋ชจ๋ ์ผ ๋B๋ชจ๋ -> A๋ชจ๋ ์ผ ๋, ์ํ๋ฅผ "์๋ฐฉํฅ ์ฐธ์กฐ" ์ฐธ์กฐ ์ฆ ์ํ ์ฐธ์กฐ๋ผ๊ณ ํ๋ฉฐ,forwardRef ์ด๋ฆ ์ ๋ฐฉํฅ ์ฐธ์กฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ ๋ฟ์ ๋๋ค.๊ทธ๋ผ ํ ์ชฝ์์๋ง ๊ด๊ณ๋ฅผ ๊ฒ์์ ์งํํ๊ฒ ๋ฉ๋๋ค.
- 0
- 1
- 393
Q&A
ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ํ๋ก๊ทธ๋จ ํน์ ๋ญ๊ฐ์?
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!(์ฌ์ง)์ด ๊ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค. mac ํ๋ฉด์ ๊ทธ๋ฆด ์ ์๊ณ pro๋ฒ์ ผ์ 4900์์ ๋๋ค.
- 0
- 1
- 218
Q&A
typeorm migration ๋ฐฉ๋ฒ์ ๋ํด์ ์๋ ค์ฃผ์ค ์ ์์๊น์?
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!๊ฐ๋ฐ ํ๊ฒฝ์์๋ synchronize ๊ฐ์ true๋ก ์ค์ ํ๋ค๋ฉด ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ํด์ค๋๋ค.ํ์ง๋ง synchronize ๋ ํ์ฌ ์๋ ์ ๋ณด๋ค์ ๋ชจ๋ drop ํ ํ ๋๊ธฐํ๋ฅผ ํ๋ ๊ฒ ์ด๊ธฐ ๋๋ฌธ์๋ฌด์กฐ๊ฑด ๊ฐ๋ฐ ํ๊ฒฝ์์๋ง ์ฌ์ฉํ์ ์ผ ํฉ๋๋ค!production์์๋ migrate cli๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.์์ธํ cli ๋ ๋งํฌ ๋จ๊ธฐ๊ฒ ์ต๋๋ค.typeorm cli ์ ๋ฆฌ
- 0
- 1
- 201
Q&A
DI(์์กด์ฑ ์ฃผ์ )์ ์ ํด์ผํ๋์?
์๋ ํ์ธ์ :)๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ ๊ถ๊ธํ์ ์ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋ต๊ธ ๋ฌ์์ฃผ์ธ์!์ด๋ ํ ์ด์ ์์ ์์กด์ฑ ์ฃผ์ ์ ๊ฐ๋ ์ ์ฌ์ฉํด์ผ ํ๋์ง ๋ช ์พํ๊ฒ ์๊ณ ์ถ์ต๋๋ค.-> ์ผ๋จ ์ด๊ฒ์ ์๊ธฐ ์ํด์ ํ ๋ฌธ์ฅ์ผ๋ก ๋ช ์พํ ์ค๋ช ํ ์ ์์ต๋๋ค. Spring ํ๋ ์์ํฌ์ IoC ์ DI ๋ฅผ ์ดํดํ์ ์ผ ํ๋ฉฐ ์ด๋ ์ถ๊ฐ๋ก ๊ฒ์์ ํตํด ํ์ตํ์๊ธธ ๋ฐ๋๋๋ค.๋ฐ์๋ ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ๋๋ค.1. nodejs๋ express๋ก ๋ฐฑ์๋๋ฅผ ๋ง๋ค์ด์์ต๋๋ค. ๋ง์ ์ฅ์ ์ด ์์์ง๋ง, ๋จ์ ๋ ๋ง์์ต๋๋ค. ๊ทธ ์ค ์ฅ์ ์ด์ ๋จ์ ์ธ ๊ฒ์ด ์์๋๋ฐ, ๋ฐ๋ก "์์ ๋กญ๋ค"์ ๋๋ค.2. ์์ ๋กญ๋ค ๋ณด๋ ์ค๊ณํจํด, ๋์์ธํจํด, ๊ตฌํ๋ฐฉ์ ๋ฑ ๊ฐ๋ฐ์ด ๋ค ์ ๊ฐ๊ฐ์ด๋ค ๋ณด๋ (๋ณด์๋ ์์ข๊ธฐ๋ ํฉ๋๋ค.) ์ํฐํ๋ผ์ด์ฆ ๋ฐฑ์๋๋ก ํฌ์ง ๋ชปํ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค.3. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํฐํ๋ผ์ด์ฆ ๊ธ ๋ฐฑ์๋์ธ Spring์ ์ค๊ณ + TS + ๊ตฌ๊ธ์ ์คํฐํ๋ผ์ด์ฆ ํ๋ ์์ํฌ Angular ์ ์ข์ ์ ๋ค์ ์กฐํฉํ์ฌ NestJS๋ฅผ ๋ง๋ค์์ต๋๋ค.4. ์ฌ๊ธฐ์ Spring์ IoC ์ DI ๋ฅผ ์ข ๋ฐฐ๊ปด์จ ๊ฒ ๊ฐ์ต๋๋ค.5. IoC ๋ DI ๋ฅผ ํตํด์ NestJS ์ provider ๋ค์ ๊ด๋ฆฌํ๋ ์ปจํ ์ด๋๋ฅผ ๋์ฐ๊ณ ์ฑ๊ธํด ํจํด์ ํ์ฉํด์ ์ปจํ ์ด๋์ ์ธ์คํด์ค๋ค์ ๋ฑ๋กํฉ๋๋ค.6. ์ ๋ฆฌํ์๋ฉด ๊ฐ ์ธ์คํด์ค๋ค์ ์ฌ๋ฌ๊ฐ ๋์ฐ๋ ๊ฒ์ด ์๋๋ผ ์ฑ๊ธํด ํจํด์ผ๋ก ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ด๋ค์ ๊ด๊ณ๋ฅผ module ๋ก ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํจ์ผ๋ก์จ ์ํฐํ๋ผ์ด์ฆ ๋ฐฑ์๋๋ก (ํฐ ๊ท๋ชจ์ ๋ฐฑ์๋) ์ค๊ณ๋ฅผ ํ ์ ์๋๋ก ํ ๊ฒ์ ๋๋ค.
- 1
- 1
- 510