목록개발/node.js (23)
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bT91ed/btsoo4ybUNB/tsTpOHwLjBc9xOefHOocE1/img.png)
이번 포스팅에서는 docker를 활용하여 컨테이너를 올리고, 서버와 연동시키는 과정에 대해 다룬다. (postgres 마스코트인 코끼리가 귀여워서 언젠가 한번 써보고 싶었음) ORM은 TypeORM을 사용했으며, express 서버를 구현하였다. 먼저 간단한 MySQL과 PostgreSQL을 비교해본다. PostgreSQL MySQL 특징 기능과 표준에 중점 속도에 중점 (단순 CRUD의 경우 빠른 속도) 사용 영역 크고 복잡한 작업에 사용 일반적으로 간단한 작업에 사용 목차 typeorm과 postgres 연결 코드 작성 postgres 실행 코드 작성 docker-compose.yaml 파일 작성 postgres 초기 설정 1. typeORM과 postgres 연결 import { DataSourc..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/KQmhQ/btsmwXvbV8O/WUifgeKTvxOo6xRACTdDW0/img.png)
이번에 혼자 프론트엔드와 백엔드를 만들어, 하나의 인스턴스로 배포하는 과정에서 사용한 Nginx. 이름부터 "엔-진" 이라, 마치 기계 엔진처럼 복잡하고 정교하게 작동할 줄 알았는데, 생각보다 심플해서 놀랐더랬다. 사실 Nginx를 사용하기 직전 여러 고초를 겪었다. 요약하자면 GCP에서 제공하는 부하분산기에서 경로를 설정하면 그 경로에 맞게 요청이 전달될 줄 알았는데 그렇지 못했다는 것. (내가 제대로 설정하지 않았을 가능성도 크다.) 이를 해결하기 위해 듣기만 했던 결국 Nginx를 사용하게 되었다. - 내가 사용한 방식 1. 먼저 default.conf 파일을 작성해야 하는데 내용은 다음과 같다. // default.conf events {} // 이벤트 규정 http { server { liste..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/ccyRoo/btsdpzvwle2/EewPJE8o0Rkd8D4uAdtWh1/img.png)
일주일 만에 포스팅이다. 사실 그동안 아무것도 하지 않은 것이 아니라, 삽질을 좀 했다. nest.js에서는 뚝딱 뚝딱 쉽게 구현되는 것들이 node.js에서는 왜 이리 예민하게 반응하는지... ㅠㅠ 아무튼 오늘은 로그아웃 구현을 위해 작성한 미들웨어에 대해 얘기해본다. 예전 부트캠프에서는 Nest.js에서 전략 패턴을 사용해서 토큰 검증을 해본 경험이 있다보니, 이번에는 오로지 별다른 기술 없이 알고리즘 로직만을 활용하여 미들웨어를 구현해보았다. 2023.02.22 - [코딩/nest.js] - NestJs - 로그아웃 프로세스 구현 / docker를 사용한 redis 해당 로직은 세 가지 로직으로 구분할 수 있다. jwtAuth : 로직의 전체 틀이자 미들웨어 자체로 사용하는 함수 jwtValidat..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/oxNvd/btsbmPG6WxB/YroNHU0EQe5GBEWSl4h6j0/img.png)
미래의 나에게 // PM2 설치 npm install pm2@latest -g # or yarn global add pm2 // pm2 실행 pm2 start ecosystem.config.js // 실행 중인 Pm2 리스트 조회 pm2 ls // 특정 프로세스 중단 pm2 stop [id] // 특정 프로세스 삭제 pm2 delete [id] // 실행 중인 pm2 종료 pm2 kill // ecosystem.config.js 설치 pm2 init // babel 모듈 yarn add -D @babel/register 먼저 PM2 는 Node.js 애플리케이션의 프로세스 관리자이며, 백그라운드에서 Node.js 애플리케이션을 실행하고 모니터링 하는 도구이다. GCP에서 사용했던 인스턴스와 같은 역할을 ..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/wFUtR/btr91SyxUuf/rQ27FuP0ZBnkk5e8R897yk/img.png)
이번 포스팅에서는 node.js 미들웨어와 라우터를 핸들링하는 방법에 대해 다룬다. 미들웨어 먼저 미들웨어란, 클라이언트와 서버 중간에서 다리 역할을 하는 컴포넌트를 의미한다. 정확히는 소프트웨어에서 다른 소프트웨어와 함께 동작하도록 설계된 컴포넌트라고 할 수 있으며, 다음과 같은 역할을 한다. 서버와 클라이언트 사이의 통신 데이터베이스와의 상호작용 웹 어플리케이션 라우팅 보안 로깅 node.js에서의 미들웨어는 app.use 메서드를 통해 등록 & 동작한다. app.use(cors({ origin: "*" })); app.use(helmet()); app.use(express.json()); app.use(express.urlencoded({ extended: true, limit: "700mb" })..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/JyPOS/btr9qBckRV7/hV1g8DVOeKcWgOoHgYkHy0/img.png)
오늘은 node.js 에서 graphQL 을 사용하는 방법에 대해 공부한 내용에 대해 다룬다. 먼저 구조에 대해 얘기하면, node.js 도 nest.js 와 비슷하게 모듈화해서 사용하는 방식이 효율적이다. index.js 를 뿌리로 하여 연결된 모습이라 이해하면 편하다. // index.js const module1 = require("resolver/module1") const module2 = require("resolver/module2") const typeDefs = [ queries, mutations, module1.typeDefs, module2.typeDefs, // enums, ] const resolvers = [ module1.resolvers, module2.resolvers ]..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/soVBX/btrXqDzL04n/91nJfsN6Yqq6myTGfpEz8k/img.png)
미래의 나에게 typeORM @nestjs/typeorm typeorm mysql2 typeORM 에 대해 포스팅 전 다루어야 할 개념에 대해 먼저 소개한다. ORM ORM (Object relational Mapping) 은, 그 말마따나 객체와 관계를 맵핑해주는 것을 말한다. 여기서 Mapping 이란, OOP(객체 지향 프로그래밍) 로 이루어진 Class 와, SQL(관계형 데이터 베이스)의 Table 을 연결시켜주는 것을 의미한다. 이전 포스팅에서 ODM(mongoose)를 통해 noSQL문을 작성했던 것처럼 ORM 또한 객체 지향적으로 코드를 작성할 수 있게 도와주는 역할을 한다. Sequelize (JavaScript 에서 일반적으로 사용) Sequelize 는 ORM을 지원하는 라이브러리이며..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/Z8JPy/btrW38HTzxN/XVkM9S3oHelLpdLz12uu71/img.png)
https://docs.nestjs.com/ 미래의 나에게 nestJS 설치 npx @nestjs/cli new 폴더이름 graphql 설치 yarn add @nestjs/graphql @nestjs/apollo graphql apollo-server-express 라이브러리 & 프레임워크 라이브러리 - 다른 사람들이 만들어 놓은 기능 (작은 기능) 프레임워크 - 라이브러리들이 모여있는 도구 모음 언어별 대표적 프레임 워크 (각 프레임워크는 의존성 주입(DI)을 지원한다.) 자바 : 스프링 파이썬 : 장고 자바스크립트 : NestJS NestJS nest.js 는 효율적이고 확장 가능한 node.js 서버를 구축하기 위한 프레임워크다. 자바스크립트와 타입스크립트 모두 호환이 가능하며, OOP(객체 지향프..