목록공부/node.js (56)
저장을 습관화
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dP1FIb/btsv8zRKMJB/3dd2kOMQuEne5riMwzjQn0/img.png)
express 공식 문서 - 미들웨어 작성 https://expressjs.com/ko/guide/writing-middleware.html Express 앱에서 사용하기 위한 미들웨어 작성 Express 앱에서 사용하기 위한 미들웨어 작성 개요 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한 expressjs.com 라우터의 앞에 존재하여 라우터보다 앞서 지정된 역할을 수행하거나, 모든 라우터의 맨 뒤에 존재하여 어떠한 라우터에도 해당되지 않은 요청에 대응할 수도 있다.(에러처리) - app.ts import * as express from "express"; import { Cat, CatType ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cnpBiQ/btstktmflCH/OhNYLSFjDqWrx8M33W4KJ0/img.png)
- /src/main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap(); - /src/app.module.ts import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ // 데코레이터, Nest..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cwoogX/btsqMiGPrk1/aXngdhKGufoHzITCg4RQfK/img.png)
- 증상 로그인 API를 만들고, 정상적인 email과 password를 입력하니 코드의 실행은 정상적으로 진행되어 200코드가 나왔으나, 토큰값이 undefined로 생성됨 - 원인 userController.js const UserService = require('../services/user_service'); class UsersController { userService = new UserService(); // (생략) // 로그인 API logIn = async (req, res) => { const {email, password} = req.body; try { const {token} = await this.userService.login(email, password); // servic..
- 증상 node.js와 sequelize로 회원가입 API를 만들고 있던 중 전달인자 email, password, confirm을 받아 password와 confirm이 일치하는지 검사하는 부분이 있었음 // ... createUser = async (email, password, confirm) => { // ... if (!confirm || password !== confirm) { throw new Error({ errorMessage: '패스워드가 일치하지 않습니다. 패스워드 재입력은 confirm 입니다.', }); } // ... } 에러를 발생시키기 위해 email과 password만 보냈더니 { "email":"test@gmail.com", "password":"1234" } "err..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BwMdG/btsp9p04kGT/oNjxE4pIivY131IKFEHrD1/img.png)
0. 기능 1) 게시물 작성 작성자 이름 게시물 비밀번호 - 게시물 수정 및 삭제용 게시물 제목 게시물 내용 2) 게시물 목록 조회 페이지네이션 - 생략 게시물 번호 게시물 제목 작성자 이름 작성일자 3) 게시물 상세 조회 작섲아 이름 게시물 제목 게시물 내용 4) 게시물 수정 게시물 비밀번호 - 일치 여부 확인 후 수정할 수 있도록 게시물 제목 게시물 내용 5) 게시물 삭제 게시물 비밀번호 일치 여부 확인 후 삭제할 수 있도록 1. lodash 패키지 설치 JavaScript에서 배열과 같은 데이터의 구조를 간편하게 함수형으로 다룰 수 있게 해주는 라이브러리이다. [참조] https://inpa.tistory.com/entry/LODASH-%F0%9F%93%9A-Lodash-vs-ES6-%EC%84%A..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bdM2g7/btsp3nKfg3l/lwZobipFqZbKS3iP9uY6R0/img.png)
Nest.js의 기능 단위는 모듈로 관장된다. 1. 새로운 모듈 생성 $ cd src // 모듈 생성은 현재 디렉토리 기준으로 진행되기 때문에 src 폴더로 가도록 하자 $ nest g mo board CREATE board/board.module.ts (82 bytes) UPDATE app.module.ts (312 bytes) /src/board/board.module.ts 파일 생성 확인 2. 컨트롤러 생성 $ nest g co board CREATE board/board.controller.ts (99 bytes) CREATE board/board.controller.spec.ts (485 bytes) UPDATE board/board.module.ts (170 bytes) nest.js 명령어는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/D9Ilc/btsp8bBYD9I/eq0OLOqv3sbAA5P9nke0qk/img.png)
1. IoC Inversion of Control, 제어 역전이라고도 한다. 지금까지는 개발자가 사용하고 싶은 객체가 있다면 이것은 개발자가 생성부터 소멸까지 직접 관리해야 했다. 이런 경우 의존하던 서비스가 변경되면 이에 맞추어 코드를 수정해야 했다. 하지만 IoC는 개발자가 사용하고 싶은 객체를 직접 생성하는 것이 아니라 객체의 생명주기 관리 자체를 외부(여기서는 Nest.js IoC 컨테이너)에 위임한다. 즉, 객체의 관리를 컨테이너에 맡겨 제어권이 넘어갔기 때문에 Inversion of Control(제어 역전)이라고 하는 것이다. IoC는 모듈 간 결합도를 낮추기 때문에 하나의 모듈이 변경되어도 다른 모듈들에 대한 영향이 최소화된다. 이를 통해 웹 어플리케이션을 지속 가능하고 확장성 있게 해준다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xS1n6/btsp8z3Nqz0/odR0EpLrbTQBKkiKmu4Wek/img.png)
작업 환경: Windows 10 Node.js가 이미 설치되어 있다는 전제 하에, 0. Nest.js 설치 $ npm install -g @nestjs/cli 이후 커맨트 창에 nest를 입력했을때 아래와 같이 사용법이 나온다면 정상적으로 설치된 것 $ nest Usage: nest [options] Options: -v, --version Output the current version. -h, --help Output usage information. Commands: new|n [options] [name] Generate Nest application. build [options] [app] Build Nest application. start [options] [app] Run Nest appl..
Nest.js란 Node.js 위에서 돌아가는 웹 프레임워크의 한 종류이다. 같은 역할을 하는 프레임워크로는 기존에 사용하던 Express가 있다. Express는 아주 간단해서 처음 공부하는데 쓰기에는 부족함이 없지만 기능을 추가하면 할 수록 그 간단함이 오히려 단점이 된다. 기능을 추가하려면 미들웨어를 선언해야하고, 개발자와 협력자들은 점점 쌓이는 미들웨어에 대해서 모두 파악해야하는 상황이 생긴다. 이케아 가구를 조립하듯, 자신이 기초부터 하나하나 쌓아올라가는 것을 좋아하는 사람이라면 문제가 되지 않지만 그게 아닌 사람들은 점점 Express를 사용하는데 있어 귀찮음을 느끼게 되었다. -----------------------------------------------------------------..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfcpK9/btso0udegnF/39LAlpp6WivNSgP5QwRPCk/img.png)
S3만으로는 서버에서 이미지 업로드하고 불러오고 하는건 안됨 S3 bucket은 진짜 단순히 저장소일 뿐이고 자신의 서버에서 저장소에 업로드하는건 multer 라이브러리 사용해야 됨 - 작업 환경 Windows 10, VSC, sequelize, MySQL, AWS RDS, S3, IAM 지 업로드 및 출력하기 [참고] https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-S3-%EB%B2%84%ED%82%B7-%EC%83%9D%EC%84%B1-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%8B%A4%EC%A0%84-%EA%B5%AC%EC%B6%95 [AWS] 📚 S3 개념 & 버킷 · 권한 설정 방법 S3 (Simple Storage Service) 개념 AW..