728x90 ๋ฐ์ํ โ Backend11 [Node.js] Prisma + MySQL ๋ค๋๋ค ๊ด๊ณ ๋ง๋ค๊ธฐ (MySQL Many to Many relationship using Prisma) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์์ฆ ์ฑํ ์ฑ์ ๋ง๋ค๋ฉด์ ์ ์ ์ ์ฑํ ๋ฐฉ์ ๊ด๊ณ๋ฅผ ์ค์ ํด์ผ ํ๋๋ฐ ์กฐ๊ธ ๋ณต์กํ ๊ฒ ์๋๋ผ๊ตฌ์. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ์ฑํ ์ฑ์ ๋ง๋๋๋ฐ User๋ ์ฌ๋ฌ ์ฑํ ๋ฐฉ์ ๊ฐ์ ธ์ผ ํ๊ณ , ์ฑํ ๋ฐฉ์ ์ฌ๋ฌ ์ ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ๋ง๋ค๊ณ ์ถ์๋๋ฐ์. ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ๋ชจ๋ธ๊ณผ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Model User ์ ์ ๋ชจ๋ธ์ ์๋์ ๊ฐ์ด ๋ง๋ค์ด ์ค๋๋ค. model User { id String @id @default(uuid()) name String @unique profileImage String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ChatRoom ์ฑํ ๋ฐฉ ๋ชจ๋ธ์ ์.. 2022. 8. 18. [Node.js] Socket.io๋ก Room ๊ตฌํํ๊ธฐ (feat. TypeScript) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ Socket.io๋ฅผ ์ด์ฉํ์ฌ Room์ ๊ตฌํํด ํน์ Room์ ์๋ ์ ์ ๋ค์๊ฒ๋ง ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์ ์๋๋ก ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Install typescript, ts-node, express, socket.io ๋ฅผ ์ค์นํด ์ค๋๋ค. npm install typescript npm install ts-node npm install express npm install socket.io npm install @types/express npm install @types/socket.io Model ๋ฉ์ธ์ง ๋ชจ๋ธ์ ๋ง๋ค์ด ์ค๋๋ค. export interface Message { type: string; user: string; message: str.. 2022. 8. 10. [Node.js] Prisma CRUD ๊ตฌํํด ๋ณด๊ธฐ (feat Prisma Studio) ์๋ ํ์ธ์. Foma ์ ๋๋ค. ์ ๋ฒ ๊ธ์ Prisma์ ๊ดํ ๋ด์ฉ๊ณผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ๋ํด์ ์ ๋ฆฌํ๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด์๋ฉด ๋ฉ๋๋ค!) ์ค๋์ Prisma๋ฅผ ์ด์ฉํ์ฌ CRUD๋ฅผ ๊ตฌํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Init Prisma ๋น ํด๋๋ฅผ ๋ง๋ค๊ณ npm์ ์ด๊ธฐํ ํด์ค๋๋ค. npm init -y ๊ทธ ๋ค์ ํ์ ์คํฌ๋ฆฝํธ prisma์ ts-node, @types/node๋ฅผ ์ค์นํด ์ค๋๋ค. npm install prisma @prisma/client typescript ts-node @types/node --save-dev ๊ทธ ๋ค์ prisma๋ฅผ ์๋ ๋ช ๋ น์ด๋ก ์ด๊ธฐํ ํด์ค๋๋ค. npx prisma init ์๋์ ๊ฐ์ด ์๋์ผ๋ก prisma ํด๋์ env ํ์ผ์ด ์์ฑ๋ ๊ฑฐ์.. 2022. 8. 2. [Node.js] Prisma๋? (feat. ์ฌ์ฉํด์ผ ๋๋ ์ด์ ) ์๋ ํ์ธ์. Foma ์ ๋๋ค! ์ง๋ Sequelize, TypeORM๊ณผ ๊ฐ์ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด์ด์ Prisma๋ผ๋ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ (ํน์ ORM์ ๋ํด ๋ชจ๋ฅด์๋ ๋ถ๋ค์ด ์๋ค๋ฉด ์ฌ๊ธฐ ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์!) Prisma๋? ํ๋ฆฌ์ฆ๋ง ๊ณต์ ํํ์ด์ง์์ ์๋์ ๊ฐ์ด ์๊ฐํ๊ณ ์์ต๋๋ค. "์ฐ๋ฆฐ ์ฐจ์ธ๋ Node.js์ TypeScript ORM์ผ" ์๋์ ๊ฐ์ด 3๊ฐ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Prisma Client: Node.js์ Typescript๋ฅผ ์ํ ์๋ ์์ฑ๊ณผ ์์ ํ ํ์ ์ฟผ๋ฆฌ ๋น๋ Prisma Migrate: ๋ง์ด๊ทธ๋ ์ด์ ์์คํ Prisma Studio: ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ํธ์งํ ์ ์๋ GUI ํธ์ง๊ธฐ Prisma Client๋ REST API,.. 2022. 8. 2. [Node.js] TypeORM๋ก CRUD ๊ตฌํํด ๋ณด๊ธฐ (feat. MySQL) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ ๋ฒ ๊ธ์์ TypeORM์ด ๋ฌด์์ธ์ง์ ๋ํด ๋ค๋ค ๋ณด์๋๋ฐ์. ์ด๋ฒ ๊ธ์์ TypeORM์ผ๋ก ์์ฑ, ์กฐํ, ์ญ์ , ์์ ์ ๋ค๋ค๋ณด๋ ๋ฒ์ ๋ํด์ ์์ฑํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Init TypeORM ์ฐ์ typeORM์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์์ฑํ ํ๋ก์ ํธ ํด๋์ typeorm ๋ชจ๋์ ์ค์นํด ์ฃผ์ ์ผ ํฉ๋๋ค. npm install typeorm -g ์๋์ ๊ฐ์ด typeorm ํ๋ก์ ํธ๋ฅผ ์์ฑํด ์ค๋๋ค. typeorm init --name ํ๋ก์ ํธ ์ด๋ฆ --database ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ํด๋น ๊ฒฝ๋ก์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์์๊ฑฐ์์. ํด๋น ํ๋ก์ ํธ๋ฅผ VSCode๋ก ์ผ๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋ช ๊ฐ์ง ํด๋์ ํ์ผ์ด ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋.. 2022. 8. 2. [Node.js] TypeORM์ด๋? (feat. ORM Library) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ์ ๋ฒ ๊ธ Sequelize์ ์ด์ด์ Node.js ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ TypeORM์ ๋ํด์ ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค. ํ์์ Typescript๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ์ ํธํ๊ธฐ ๋๋ฌธ์ "Sequelize๋ฅผ Typescript๋ก ๊ฐ๋ฐํ ์ ์๋?" ํ๊ณ ์ฐพ์๋ดค๋๋ Typescript ๊ธฐ๋ฐ์ผ๋ก TypeORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋๋ผ๊ตฌ์. (๋ฌผ๋ก Sequlize๋ Typescript๋ฅผ ์ง์ํฉ๋๋ค. ์ฌ๊ธฐ ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.) ๊ทธ๋์ ์ค๋์ TypeORM์ด ๋ฌด์์ธ์ง์ ๋ํด ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ ORM์ด๋? ๋จผ์ Sequelize๋ฅผ ์๊ธฐ ์ํด์ ORM์ ๊ฐ๋ ์ ์์์ผ ํ๋๋ฐ์. ๊ทธ ์ด์ ๋ ๋ฐ๋ก Sequelize๊ฐ Node.js์ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ .. 2022. 8. 2. [Node.js] Sequelize๋ก C.R.U.D ๊ตฌํํด ๋ณด๊ธฐ (feat. MySQL) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ์ ๋ฒ Sequelize ์ด๋ก ๊ธ์ ์ด์ด์ C.R.U.D๋ฅผ ์ง์ ๊ตฌํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. (ํน์ ์ ๋ฒ ๊ธ์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด ์ฃผ์ธ์) ๋ฐ๋ก ์์ํ ๊ฒ์~ Install express npm install --save express cors npm install --save cors sequelize npm install --save sequelize mysql2 npm install --save mysql2 Sequelize init sequelize init Sequelize๋ฅผ init ํด์ฃผ๋ฉด ์๋์ผ๋ก config, migrations, models, seeders ์ด๋ ๊ฒ 4๊ฐ์ ํด๋๊ฐ ์๊ธธ๊ฑฐ์์. ์ด๋ฒ ๊ธ์์๋ seeders๋ ์ด์ฉ๋์ง ์์ผ๋ ์ญ์ ํด ์ค.. 2022. 7. 30. [Node.js] Sequelize๋? (feat. ORM) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ํ์์ SQL๋ฌธ์ ์์ฑํ๋๋ฐ ์ต์ํ์ง ์์ ๋ถํธํ ์ ์ด ๋ง์์๋๋ฐ์. ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ก SQL๋ฌธ ์์ฑ ๋์ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์กฐ์์ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Sequelize์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ ORM์ด๋? ๋จผ์ Sequelize๋ฅผ ์๊ธฐ ์ํด์ ORM์ ๊ฐ๋ ์ ์์์ผ ํ๋๋ฐ์. ๊ทธ ์ด์ ๋ ๋ฐ๋ก Sequelize๊ฐ Node.js์ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ด์ฃ . ORM์ Object Relational Mapping์ ์ค์๋ง๋ก ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๋งคํํด์ฃผ๋ ๊ฒ ์ ๋๋ค. ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ๋งคํํด์ค๋ค๋ ๊ฒ ์ด๋ค ๊ฒ์ผ๊น์? ์๋ฅผ ๋ค๋ฉด ๊ฐ์ฒด ์งํฅ ์ธ์ด์์๋ ๋ชจ๋ธ์ ์ ์ํ ๋ Class๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ Table์ ์ฌ์ฉํฉ๋๋ค. .. 2022. 7. 30. [Node.js] ์ค์๊ฐ ์ฑํ ์ฑ ๋ง๋ค์ด๋ณด๊ธฐ 1 - Websocket ์ด์ฉํ์ฌ ๋ฐฑ์๋ ๊ตฌํํ๊ธฐ (feat. Websocket) (Build a real-time chatapp 1 - Implement backend with websocket) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ Node.js์์ Websocket์ ์ด์ฉํ์ฌ ์ค์๊ฐ ์๋ฒ๋ฅผ ๊ตฌํํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ (๋ฐฑ์๋ ์๋ฒ๋ฅผ ์ด๊ธฐํ ํ๋ ๋ฐฉ๋ฒ์ ์๋ตํ๊ณ ์งํํฉ๋๋ค. ํน์ ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด ์ฃผ์ธ์!) Tutorial ์ค์๊ฐ ์ฑํ ์ฑ ๋ง๋ค์ด๋ณด๊ธฐ 1 - Websocket ์ด์ฉํ์ฌ ๋ฐฑ์๋ ๊ตฌํํ๊ธฐ (feat. Websocket) (Build a real-time chatapp 1 - Implement backend with websocket) ์ค์๊ฐ ์ฑํ ์ฑ ๋ง๋ค์ด๋ณด๊ธฐ 2 - Websocket ์ด์ฉํ์ฌ ํ๋ก ํธ ๊ตฌํํ๊ธฐ (Build a real-time chatapp 1 - Implement frontend with websocket) Install express ๊ฐ๋จํ.. 2022. 7. 28. [Node.js] React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 4 - Express๋ก CRUD ๊ตฌํํ๊ธฐ (Building a CRUD API with Express) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ Node.js์์ Express ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ MySQL ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์์ฑ, ์กฐํ, ์์ , ์ญ์ (CRUD) ๋ฅผ ๊ตฌํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Tutorial React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 1 - ์๋ฒ ์ด๊ธฐ ์ธํ ํ๊ธฐ (Initialize server setting) React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 2 - MySQL ํ ์ด๋ธ ๋ง๋ค๊ธฐ (Create a MySQL Table) React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 3 - React Native ํ๋ฉด ๊ตฌํํ๊ธฐ (Implement frontend) React N.. 2022. 7. 27. [Node.js] React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 1 - ์๋ฒ ์ด๊ธฐ ์ธํ ํ๊ธฐ (Initialize server setting) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ด๋ฒ ๊ธ์ Node.js ์๋ฒ ์ด๊ธฐ ์ธํ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Tutorial React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 1 - ์๋ฒ ์ด๊ธฐ ์ธํ ํ๊ธฐ (Initialize server setting) React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 2 - MySQL ํ ์ด๋ธ ๋ง๋ค๊ธฐ (Create a MySQL Table) React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 3 - React Native ํ๋ฉด ๊ตฌํํ๊ธฐ (Implement frontend) React Native + Node.js + MySQL To do list ๋ง๋ค๊ธฐ 4 - .. 2022. 7. 23. ์ด์ 1 ๋ค์ 728x90 ๋ฐ์ํ