๋ชฉ๋ก๐ฉโ๐ป ๋ฐฑ์๋(Back-End)/Nest js (38)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?

=> ์ค๋์ ํ ํฌ์ฉ์ด : ์น์์ผ์ด ๋ญ๋๋ฉด ๐ซง ์น์์ผ์ผ๋ก http ์ ์๋ ์ ์ ๋ฉ์์ง ๋ณด๋ด๊ธฐ ๐ฟ server.js const express = require("express"); const app = express(); app.use("/", (req, res) => { res.sendFile(__dirname + "/index.html"); }); app.listen(8080); // ์น์์ผ ์ฐ๊ฒฐ const WebSocket = require("ws"); const socket = new WebSocket.Server({ port: 8081, }); // ์น์์ผ์ผ๋ก ์ค๋ ์ ์ ๋ฉ์์ง ๋ฐ๊ธฐ socket.on("connection", (ws, req) => { ws.on("message", (msg) =>..
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ ๋ชจ๋ ๊ฒ์๋ฌผ ๊ฐ์ ธ์ค๊ธฐ ๐ board.service.ts // ๋ชจ๋ ๊ฒ์๋ฌผ ์กฐํํ๊ธฐ async getAllBoards(): Promise { return this.boardRepository.find(); } ๐ board.controller.ts // ๋ชจ๋ ๊ฒ์๋ฌผ ์กฐํํ๊ธฐ @Get("/") getAllBoard(): Promise { return this.boardsService.getAllBoards(); }
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ ๊ฒ์๋ฌผ ์ ๋ฐ์ดํธ ํ๊ธฐ ๐ board.service.ts // ํน์ ๊ฒ์๋ฌผ์ ์ํ ์ ๋ฐ์ดํธ async updateBoardStatus(id: number, status: BoardStatus): Promise { const board = await this.getBoardById(id); board.status = status; await this.boardRepository.save(board); return board; } ๐ board.controller.ts // ํน์ ๊ฒ์๋ฌผ์ ์ํ ์ ๋ฐ์ดํธ @Patch("/:id/status") updateBoardStatus( @Param("id", ParseIntPipe) id: number, @Body('status',..
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ remove() VS delete() remove : ๋ฌด์กฐ๊ฑด ์กด์ฌํ๋ ์์ดํ ์ remove ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ง์ฐ๊ธฐ (๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฌ) delete : ์์ดํ ์ด ์กด์ฌํ๋ฉด ์ง์ฐ๊ณ , ์กด์ฌํ์ง ์์ผ๋ฉด ์๋ฌด๋ฐ ์ํฅ์ด ์์ remove๋ ํ๋์ ์์ดํ ์ ์ง์ธ ๋ ๋๋ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ฉํจ (์์ดํ ์ ๋ฌด + ์ง์ฐ๊ธฐ) delete ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฒ๋ง ์ ๊ทผ ๊ฐ๋ฅ ๐งธ ๊ฒ์๋ฌผ ์ญ์ ํ๊ธฐ ๐ board.service.ts // ID๋ก ํน์ ๊ฒ์๋ฌผ ์ญ์ ํ๊ธฐ async deleteBoard(id: number): Promise { const result = await this.boardRepository.delete(id); // ID๊ฐ ์กด์ฌํ๋ ๊ฒ์๋ฌผ์ด๋? if (result.af..
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ board.service.ts // ๊ฒ์๋ฌผ ์์ฑํ๊ธฐ async createBoard(createBoardDto: CreateBoardDto): Promise { const {title, description} = createBoardDto; const board = this.boardRepository.create({ title, description, status: BoardStatus.PUBLIC }) await this.boardRepository.save(board); return board; } ํ์ repository ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค๋ฉด! ๐ board.repository.ts import { EntityRepository, Repository } fro..
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ ID๋ฅผ ์ด์ฉํด์ ํน์ ๊ฒ์๋ฌผ ๊ฐ์ ธ์ค๊ธฐ ๐ Service ์ Repository ๋ฃ์ด์ฃผ๊ธฐ : Board ์๋น์ค ์ Board ๋ ํ์งํ ๋ฆฌ๋ฅผ ๋ฃ๊ธฐ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์๊ฑฐ ๊ฐ์ ธ์ฌ ๋ TypeORM ์ธ ๋์๋ Repository ํจํด ์ฌ์ฉํจ : @injdectRepository ๋ ์๋น์ค์์ BoardRepository ๋ฅผ ์ด์ฉํ๊ธฐ์ํด boardRepository ๋ณ์์ ๋ฃ๋๋ค @Injectable() export class BoardsService { constructor( @InjectRepository(BoardRepository) private boardRepository: BoardRepository, ){} } ๐ Service ์ getBoardById ๋ฉ์๋ ์์ฑ..

=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ Repository ์์ฑํ๊ธฐ : ์ํฐํฐ ๊ฐ์ฒด์ ํจ๊ป ์๋ํ๋ฉฐ ์ํฐํฐ ์ฐพ๊ธฐ, ์ฝ์ , ์ ๋ฐ์ดํธ, ์ญ์ ๋ฑ์ ์ฒ๋ฆฌํจ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์ผ์ ์๋น์ค๊ฐ ์๋ Repository ์์ ํ๊ธฐ => Repository Pattern import { EntityRepository, Repository } from "typeorm"; import { Board } from "./board.entity"; @EntityRepository(Board) export class BoardRepository extends Repository {}
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS ๐งธ ๊ฒ์๋ฌผ์ ์ํ ์ํฐํฐ (Entity) ์์ฑํ๊ธฐ ๐ Entity ์์ฑ ์ด์ : TypeORM ์ ์ฌ์ฉํ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๋ก ๋ณํ๋๋ class ์ด๊ธฐ ๋๋ฌธ์ ํด๋์ค๋ฅผ ์์ฑํ ํ ๊ทธ ์์ ์ปฌ๋ผ๋ค์ ์ ์ํจ ๐ @Entity() : Board ํด๋์ค๊ฐ ์ํฐํฐ์์ ๋ํ๋ด๋๋ฐ ์ฌ์ฉ ๐ @Entity() : id ์ด์ด Board ์ํฐํฐ์ ๊ธฐ๋ณธ ํค ์ด์์ ๋ํ๋๋๋ฐ ์ฌ์ฉ ๐ @Entity() : Board ์ํฐํฐ์ title ๋ฐ description ๊ฐ์ ๋ค๋ฅธ ์ด ๋ํ๋๋ฐ ์ฌ์ฉ import { BaseEntity, Column, PrimaryGeneratedColumn } from "typeorm"; import { BoardStatus } from "./board.mode..