일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Mongoose
- MongoDB
- nestjs
- JSON.stringify
- 카카오 소셜로그인
- 화살표 함수
- 캐러셀
- javacript
- 중첩 구조 분해
- 자바스크립트
- Map
- nextjs
- 객체
- react-slick
- context switch
- JSON.parse
- JavaScript
- DB
- 로그스태시
- 구조 분해 할당
- nodemailer
- AGGREGATE
- 참조에 의한 객체 복사
- 카카오로그인
- 위크셋
- nest
- 위크맵
- TypeScript
- logstash
- 이메일 전송
- Today
- Total
목록Framework/NestJS (11)
뚜sh뚜sh
1. 몽고디비 cluster 생성하기 - https://www.mongodb.com/cloud/atlas/register 에 들어가서 회원가입 하기 2. mongoose(몽고디비 전용 orm 패키지) 설치 npm install --save @nestjs/mongoose mongoose 3. kindagoose 설치 - npm으로 설치했더니 에러가 나서 yarn으로 설치함 yarn add kindagoose @typegoose/typegoose mongoose 4. app.module.ts 파일에 kindagoose로 db 연결 @Module({ imports: [ KindagooseModule.forRoot(process.env.MONGODB_URI), ], controllers: [AppControll..
1. kakao developer에서 어플리케이션 생성 2. 카카오 로그인 탭에 들어가서 활성화 설정 on으로 바꿔주기 3. 카카오 로그인 탭 맨 밑에 있는 Redirect URI 설정해주기 4. passport-kakao 설치 npm i @nestjs/passport passport passport-kakao npm i -D @types/passport-kakao 5. kakao.guard.ts 파일 생성 import { Reflector } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; export class KakaoAuthGuard extends AuthGuard('kakao') { constructor(private rea..
프론트에서 보낸 리다이렉트 주소를 가진 controller의 코드 @Get('/kakao') async kakaoAuth(@Req() req: Request, @Res() res: Response) { // 프로필을 받아온 다음, 로그인을 처리해야 하는 곳 (oauth.service.ts에서 선언해줌) return this.oauthService.oauthLogin(req, res); } 위 코드 안에 있는 oauthLogin이라는 함수는 service 안에 있음 /** * 아래 함수는 passport-kakao 없이 카카오 소셜 로그인을 구현할 때 필요한 코드 */ async oauthLogin(req: Request) { let accessToken; try { const url = 'https://..
모든 게시물 데이터를 데이터베이스에서 가져오는 로직 구현 - 이 로직은 Service에서 구현하면 됨 - 바로 데이터베이스에서 하면 헷갈릴 수 있어서 우선 로컬 메모리에 담아서 처리해볼 예정 2분50초
Board Service 생성하기 - 해당 폴더 안에서 아래 명령어를 터미널에 입력하면 생성됨 nest g service boards --no-spec Board Service를 Board Controller에서 이용할 수 있게 해주기 (Dependency Injection) - NestJS에서 Dependency Injection은 클래스의 Constructor안에서 이루어짐 접근 제한자를 이용해서 소스 간단하게 하기 - 접근 제한자(public, protected, private)를 생성자 파라미터에 선언하면 접근 제한자가 사용된 생성자 파라미터는 암묵적으로 클래스 프로퍼티르 선언됨 * 자바스크립트에서는 private같은 접근 제한자를 사용할 수 없지만 Typescript에서는 사용가능함
Provider 란 ? - 프로바이더는 Nest의 기본 개념 - 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼 등 프로바이더로 취급될 수 있음 - 프로바이더의 주요 아이디어는 종속성으로 주입할 수 있다는 것 - 즉, 객체는 서로 다양한 관계를 만들 수 있으며 객체의 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임될 수 있음 Service 란 ? - 서비스는 소프트웨어 개발내의 공통 개념이며, NestJS, Javascript에서만 쓰이는 개념이 아님 - @Injectable 데코레이터로 감싸져서 모듈에 제공되며, 이 서비스 인스턴스는 애플리케이션 전체에서 사용될 수 있음 - 서비스는 컨트롤러에서 데이터의 유효성 체크를 하거나 데이터베이스에 이 아이템을 생성하는 등..
Controller 란 ? - 컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답을 반환함 - 컨트롤러는 @Controller 데코레이터로 클래스를 데코레이션하여 정의됨 - 데코레이터는 인자를 Controller에 의해서 처리되는 "경로"로 받음 Handler 란 ? - 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식된 컨트롤러 클래스 내의 단순한 메소드 Board Controller 생성하기 - 아래 명령어를 입력하면 생성됨 nest g controller boards --no-spec * --no-spec : 테스트를 위한 소스 코드 생성 x
처음에 할 일 ! - app.controller.spec.ts 파일 삭제 - app.controller.ts 파일 삭제 - app.service.ts 파일 삭제 - test 폴더 삭제 Board Module 생성하기 - 아래 코드가 모듈 생성 명령어 nest g module boards * nest : using nestcli * g : generate * boards : name of the schematic
NestJS 모듈이란 ? - @Module {} 데코레이터로 주석이 달린 클래스 - Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터 제공 - 각 응용 프로그램에는 하나 이상의 모듈 (루트 모듈)이 있음 - 루트 모듈은 Nest가 사용하는 시작점 - 모듈은 밀접하게 관련된 기능 집합으로 구성 요소를 구성하는 효과적인 방법 - 기능별로 만듦 ex) 유저 모듈, 주문 모듈, 챗 모듈... - 같은 기능에 해당하는 것들은 하나의 모듈 폴더안에 넣어서 사용함 (UserController, UserService, UserEntity 는 다 같은 기능이기에 UserModule안에 넣음) - 모듈은 기본적으로 싱글톤이므로 여러 모듈간에 쉽게 공급자의 동일한 인스턴스를 공유할 수 있음
eslintrc.js - 개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤 수 있게 도와주는 라이브러리 - 타입스크립트를 쓰는 가이드 라인 제시, 문법에 오류가나면 알려주는 역할 등등 prettierrc - 주로 코드 형식을 맞추는데 사용 - 에러 찾는 것이 아닌 코드 포맷터 역할 nest-cli.json - nest 프로젝트를 위해 특정한 설정을 할 수 있는 json 파일 tsconfig.json - 어떻게 타입스크립트를 컴파일 할 지 설정 tsconfig.build.json - tsconfig.json의 연장선상 파일이며, build를 할 때 필요한 설정들 - "excludes"에서는 빌드할 때 필요없는 파일들 명시 package.json - build : 운영환경을 위한 빌드 - format : ..