2024/01 36

자바스크립트의 배열 다루기

자바스크립트 배열의 메소드가 어떤게 있는지 예시로 한번에 살펴보자. [3, 4, 5, 6].at(1); // 4 [3, 4, 5, 6].pop(); // [3, 4, 5] [3, 4, 5, 6].push(7); // [3, 4, 5, 6, 7] [3, 4, 5, 6].fill(1); // [1, 1, 1, 1] [3, 4, 5, 6].join("-"); // '3-4-5-6' [3, 4, 5, 6].shift(); // [4, 5, 6] [3, 4, 5, 6].reverse(); // [6, 5, 4, 3] [3, 4, 5, 6].unshift(1); // [1, 3, 4, 5, 6] [3, 4, 5, 6].includes(5); // true [3, 4, 5, 6].map((num) => num + 6..

타입스크립트로 프로젝트 기본 생성하기

기본적으로 js 기반의 프로젝트들은 프로젝트 명을 작성할 때 [소문자]로만 해주는 것이 좋다. 리액트의 경우 npx create-react-app [project name] --template=typescript 뷰의 경우 vue create [project name] 위와 같이 지정하면 선택 메뉴가 등장한다. 메뉴얼을 선택해주자. 그럼 초기 설정값을 내가 선택할 수 있게 되는데, 기본적으로 Babel과 Linter만 선택되어 있다. TypeScript, Router, Vuex 등을 추가 선택해주자. 위아래 키보드로 이동해서 스페이스바를 눌러주면 선택된다. 선택이 끝났으면 엔터를 눌러주자. Vue의 버전을 선택하는 화면이 나온다. 3.x를 선택해 주자. 이번에는 class-style component 신..

Nest.js에서 단위 테스트코드 구성 이해하기

Nest.js 에서 초기에 자동 생성되는 테스트 코드는 실행하면 오류가 발생합니다. tsconfig.json 에서 다음 항목을 수정해 주어야 합니다. { "compilerOptions": { //기존항목 "types": ["node","jest"], }, } 다음으로 단위 테스트 파일은 src 폴더 하위에, 파일명에 spec 이란 문자열을 포함하여 작성해야 합니다. 먼저 다음 메소드들에 대해서 알아야 합니다. "describe" 함수는 테스트 코드를 그룹화하고, 해당 그룹에 대한 설정을 제공하는 Jest에서 제공하는 함수 중 하나입니다. 이 함수를 사용하면 테스트를 더 구조화하고 읽기 쉽게 만들 수 있습니다. "beforeEach"는 Jest에서 제공하는 함수 중 하나로, 각 테스트가 실행되기 전에 공통..

Nest.js의 TypeORM의 접속정보 분리하기

TypeORM의 접속에 필요한 정보를 dbconfig.ts 파일로 따로 분리하여 app.module.ts의 소스코드를 간소화 시켜보겠습니다. 먼저 다음과 같이 분리된 접속 정보를 작성해 줍니다. import { TypeOrmModuleOptions } from '@nestjs/typeorm'; import { Member } from './entities'; const config: TypeOrmModuleOptions = { logging:false, type: 'mssql', host: String(process.env.DATABASE_HOST), port: Number(process.env.DATABASE_PORT), username: String(process.env.DATABASE_USERNAM..

Docker 재배포

소스코드가 수정되고 나서 도커에 재배포하는 순서를 확인해 보자. 먼저 ps 명령어로 현재 동작중인 도커를 확인해 준다. docker ps 이제 맨앞에 있는 컨테이너 id를 확인했으니, 다음 명령으로 중지시켜 보자. docker stop 정상적으로 종료되면 하단에 container-id가 한번더 출력된다. 물론 docker desktop에서도 가능하며, 상태도 확인할 수 있다. 이제 rm 명령어로 기존 소스코드로 배포된 내용의 컨테이너를 먼저 삭제해준다. docker rm -f node:18 또는 Docker Desktop에서 휴지통 아이콘을 눌러 삭제할 수 있다. 마찬가지로 소스코드가 배포된 image를 삭제해 준다. docker rmi -f node:18 삭제가 되었다면 도커를 다시 빌드해 주자. do..

Nest.js 에서 JWT 인증 구현하기

일단 기본적으로 간단하게 헤더에 토큰이 있는지 없는지만 검증하는 interceptor를 만들 겁니다. 다음 코드를 참고하세요. import { Injectable, NestInterceptor, ExecutionContext, CallHandler, UnauthorizedException } from '@nestjs/common'; import { Observable } from 'rxjs'; @Injectable() export class AuthInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { const request = context.switchToHt..

Nest.js 에서 Swagger에 Authorize 활성화 하기

스웨거를 이용한 테스트를 진행할 때, 필수적으로 필요한 게 검증절차일 겁니다. jwt 토큰을 사용한 인증시스템을 구현하고 이를 Swagger상에서 테스트 하기 위한 설정을 알아봅시다. Nest.js에서는 Authorize가 매우 쉽게 구현됩니다. DocumentBuilder에 addBearerAuth를 추가하면 됩니다. const config = new DocumentBuilder() .setTitle('Api Title') .setDescription('Api Description') .setVersion('1.0') .addTag('member') .addBearerAuth( { type: 'apiKey', scheme: 'bearer', in: 'header', name:'access_token' ..

Nest.js에서 env로 외부 환경요소 주입하기

일단 Nest.js에서 env를 사용하기 위해서 dotenv 라이브러리를 다음과 같이 설치해줍니다. npm install dotenv 만약 클러스터를 이용하고 있다면, 기존 포스트를 참고해 줍니다. https://roslyndev.tistory.com/33 Nest.js 에서 cluster로 요청 격리하기 기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 roslyndev.tistory.com 이제 .env파일을 만들어 줍니다. 각각 파일에 내가 필요로 하는 환경 요소들을 동일하게 넣어줍니다. 다음 내용은 예시니까, 참고만..

반응형