라벨이 read인 게시물 표시

NestJS Redis를 이용하여 캐시(Cache) 관리 mset, mget

이미지
 이전 글에서는 하나의 키와 값을 저장하거나 하나만 조회를 했습니다. 이번에는 여러개의 키값을 이용하여 값을 저장하거나 조회하는 비즈니스 로직을 작성하도록 하겠습니다. 아래 링크를 참고하시면 NestJS와 Redis를 연결하고 사용하는 방법에 대해서 알수 있습니다. NestJS Redis 연결 NestJS Redis를 이용하여 캐시(Cache) 관리 redis가 Local에 설치되지 않을시 해당 'docker-compose.yaml'을 사용하여 redis컨테이너를 생성하면 됩니다.  // 여러개의 keys값과 values를 저장하기 위한 서비스 async saveDataMany ( key : string [], value : any []) { try { const setKeysValues : any [] = []; if ( key . length === value . length ) { // mset을 하기 위해서 [key, value] for ( let i = 0 ; i < key . length ; i ++) { setKeysValues . push ( key [ i ]); setKeysValues . push ( value [ i ]); } } else { throw new ConflictException ( 'key와 value갯수가 일치하지 않음' ); } console . log ( 'setKeysValues : ' , setKeysValues ); // ttl이 설정되지 않는다면 기본 5초간 유지되고 사라진다. 0은 무제한 const result = await this . cacheManager . store . mset (... setKeysValues , { t...

NestJS MongoDB 사용하기3- DB Create Read

이미지
 안녕하세요. 알렉스입니다. 저번 포스팅에 이어 이번에는 MongoDB에 CRUD기능을 넣도록 하겠습니다. 처음 들어오셨다면 이전글을 참고해 주시기 바랍니다. 이전글 : NestJS MongoDB 사용하기2 - DB 스키마 생성 // src/users/dto/create-user.dto.ts import { ApiProperty } from '@nestjs/swagger' ; import { IsInt , IsNotEmpty , IsObject , IsOptional , IsString , Max , Min , } from 'class-validator' ; export class CreateUserDto { @ IsString () @ IsNotEmpty () @ ApiProperty ({ description : '유저 고유ID' , type : String , example : 'abc123' , }) id : string ; @ IsString () @ IsNotEmpty () @ ApiProperty ({ description : '유저 이름' , type : String , example : 'alex' , }) name : string ; @ IsString () @ IsNotEmpty () @ ApiProperty ({ description : '유저 전화번호' , type : String , example : '01035451268' , }) mobile : string ; @ IsInt () @ Min ( 20 ) @ Max ( 99 ) @ IsNotEmpty () @ ApiProperty ({ description : ...

Nest JS Status Code 설정하기

이미지
import { Body , Controller , Get , Param , Post , Query , HttpCode , // 정상응답코드 지정 HttpStatus , // NestJS에서 제공하는 status 선택 } from '@nestjs/common' ; // coffee 컨트롤러 // localhosg:3000/coffee url로 클라이언트에서 서버로 요청을 준다. @ Controller ( 'coffee' ) export class CoffeeController { // body값을 읽기 위하여 Post요청을 만든다. @ Post () // 응답할 코드를 지정 @ HttpCode ( HttpStatus . ACCEPTED ) // ACCEPTED는 202코드 출력 create ( @ Body ( 'name' ) name : string , @ Body ( 'message' ) message : string ) { // create에서 Body를 받을수 있도록 코딩한다. console . log ( "request from client(POST)" ) // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return ( `당신의 이름은 ${ name } 이고 보낸 메세지는 ' ${ message } ' 입니다.` ); } }   위 코드에서 NestJS에서 제공해 주는 '@HttpCode'를 이용하여 정상적인 응답이 을 줄때의 status code를 클라이언트로 출력해 줍니다. 위 코드에서는 202를 출력하도록 설정되어 있습니다. POST요청에 따른 응답이 202로 정상적으로 ...

Nest JS 바디(body)값 읽기

이미지
  // body값을 읽기 위하여 Post요청을 만든다. @ Post () // create에서 Body를 받을수 있도록 코딩한다. create (@ Body () body ) { // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return body ; } 해당 컨트롤러(위 코드는 coffee컨트롤러에 있음)에 위 코드를 작성한다. 위 코드를 입력하고 Insomnia에서 POST요청을 할때 위 사진과 같이 Body로 보낸 요쳥을 서버에서 다시 응답으로 오는것을 알수 있습니다.  // body값을 읽기 위하여 Post요청을 만든다. @ Post () create ( @ Body ( 'name' ) name : string , // body의 name만 따로 name변수에 저장 @ Body ( 'message' ) message : string // body의 message만 따로 message변수에 저장 ) { // create에서 Body를 받을수 있도록 코딩한다. console . log ( "request from client(POST)" ) // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return ( `당신의 이름은 ${ name } 이고 보낸 메세지는 ' ${ message } ' 입니다.` ); } 만약 해당 body에 무엇이 들어올지 알면 미리 변수로 지정을 할수 있습니다. 여기서는 name, message를 body에서 받아서 변수로 지정을 합니다. 그리고 응답을 보낼때 하나의 문자열로 클라이언트로 보냅니다.