반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 플러터 공부
- JPA스터디
- 스프링부트
- 스프링
- 카프카
- 기술공부
- 알고리즘공부
- 자료구조공부
- 스프링 공부
- Flutter
- DDD
- 자바공부
- 프로그래머스
- querydsl
- 플러터 개발
- 스프링공부
- K8S
- 기술면접공부
- JPA예제
- nestjs스터디
- 코테준비
- JPA
- nestjs공부
- Kafka
- Axon framework
- nestjs
- JPA공부
- 코테공부
- JPA 공부
- 스프링부트공부
Archives
- Today
- Total
DevBoi
[NestJS] CRUD 본격적으로 시작해보기 본문
반응형
일단 로컬 데이터를 기반으로 컨트롤러, 서비스를 연결해보자
Controller
import { Controller, Get } from '@nestjs/common';
import { BoardsService } from './boards.service';
@Controller('boards')
export class BoardsController {
constructor(private boardService: BoardsService){}
@Get('')
getAllBoard(){
return this.boardService.getAllBoards();
}
}
Service
import { Injectable } from '@nestjs/common';
@Injectable()
export class BoardsService {
private boards = [];
getAllBoards(){
return this.boards;
}
}
이렇게 하고 /boards를 하면 아래와 같이 나온다.
당연하다, 로컬 변수의 값이 없으니.. 물론 데이터를 추가하면 데이터가 잘 나온다.
board.model.ts를 만들 예정이다.
게시물에 대한 내용을 옮기고 주고 뭐 그런 dto같은 개념이다.
export interface Board{
id: string;
title: string;
description: string;
status: BoardStatus
}
export enum BoardStatus {
PUBLIC = 'PUBLIC',
PRIVATE = 'PRIVATE'
}
위와 같이 만들고
BoardService의 내용을 바꿔준다.
import { Injectable } from '@nestjs/common';
import { Board, BoardStatus } from './board.model';
import {v1 as uuid} from 'uuid'
@Injectable()
export class BoardsService {
private boards: Board[] = [];
getAllBoards() : Board[]{
return this.boards;
}
createBoard(title: string, description: string){
const board: Board = {
id: uuid(),
title,
description,
status: BoardStatus.PUBLIC
}
this.boards.push(board);
return board;
}
}
Controller도 조금 바꿔보자
import { Controller, Get } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
constructor(private boardService: BoardsService){}
@Get('')
getAllBoard(): Board[]{
return this.boardService.getAllBoards();
}
}
이렇게 되면 서비스에는 총 게시물 생성 에 대한 메소드가 생기고,
이게 전체 배열에 추가를 해준다. uuid는 임의로 id를 유니크한값으로 주기 위함이다.
무튼 이렇게 하면 생성 및 조회를 로컬 데이터 기반으로 동작하게 끔 구현할 수 있다.
마지막으로 동작 확인 및 컨트롤러에 추가해보자
import { Body, Controller, Get, Post } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
constructor(private boardService: BoardsService){}
@Get('/')
getAllBoard(): Board[]{
return this.boardService.getAllBoards();
}
@Post('/create')
createBoard(@Body('title') title: string,
@Body('description') description: string){
console.log(title);
console.log(description)
}
}
잘 나온다. 이제 service 로 해당 값을 넘겨보자
잘 가져온다.
마지막으로 수정한 컨트롤러 소스를 보자
import { Body, Controller, Get, Post } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
constructor(private boardService: BoardsService){}
@Get('/')
getAllBoard(): Board[]{
return this.boardService.getAllBoards();
}
@Post('/create')
createBoard(@Body('title') title: string,
@Body('description') description: string){
this.boardService.createBoard(title,description);
}
}
이렇게 하면, 기본적인 CRUD까지는 아니고
생성 및 조회가 가능한것을 확인할 수있다.
반응형
'Develop > [NestJs]' 카테고리의 다른 글
[NestJS] DTO 사용 (1) | 2023.05.27 |
---|---|
[NestJs] 게시판 정보 불러오기 및 게시판 마무리 (0) | 2023.05.27 |
[NestJS] 모듈, 컨트롤러, 서비스 생성 하기 (0) | 2023.05.22 |
[NestJs] 간단하게 동작과정에 대해서 살펴보기 (0) | 2023.05.22 |
[NestJS] 간단하게 내부 프로젝트 구성 살펴보기 (0) | 2023.05.22 |