Nest.js 13

[Nest.js] 본인의 게시물만 보고 쓰고 삭제하기

유저(OneToMany)와 게시물(ManyToOne)의 관계 형성 해주기 user.entity.ts import { type } from 'os'; import { Board } from 'src/boards/board.entity'; import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn, Unique, } from 'typeorm'; @Entity() @Unique(['username']) export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() password: string; @On..

Nest.js 2023.01.30

[Nest.js] 인증된 유저만 게시물 보고 쓸 수 있게 만들기

유저에게 게시물 접근 권한 주기. 인증에 관한 모듈을 board 모듈에서 쓸 수 있어야 하기에 board module에서 인증 모듈 imports (이렇게 한다면 AuthModule에서 export 하는 어떤 것이든 board Module에서 사용 가능) // boards.module.ts에 AuthModule 추가 import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from 'src/auth/auth.module'; import { Board } from './board.entity'; import { BoardRepository } from './boar..

Nest.js 2023.01.30

[Nest.js] Passport, JWT 이용해서 토큰 인증 후 유저 정보 가져오기

JWT란? JWT (JSON Web Token)는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준(RFC 7519)이다. 이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있다. 간단하게 얘기하자면 정보를 안전하게 전할 때 혹은 유저의 권한 같은 것을 체크를 하기 위해서 사용하는데 유용한 모듈이다. Passport 모듈과 함께 JWT 인증 처리해보기 npm install @nestjs/jwt @nestjs/passport passport passport-jwt --save JWT 토큰 생성받기 모듈에 JWT, Passport 등록해주기 // auth.module.ts import { Module } from '@nestjs/common';..

Nest.js 2023.01.30

[Nest.js] 회원가입과 로그인 구현 2

유저 이름에 유니크한 값 주기(중복 금지) 두가지 방법이 있다. 레포지토리에서 findOne 메소드를 이용해서 이미 같은 유저 이름을 가진 아이디가 있는지 확인하고, 없다면 데이터를 저장하는 방법. 이 방법은 DB처리를 두 번 해줘야 함. DB레벨에서 만약 같은 이름을 가진 유저가 있따면 에러를 던져줌 2번째 방법으로 구현. user.entity.ts 파일로 가서 import { BaseEntity, Column, Entity, PrimaryGeneratedColumn, Unique, } from 'typeorm'; @Entity() @Unique(['username']) export class User extends BaseEntity { @PrimaryGeneratedColumn() id: numbe..

Nest.js 2023.01.27

[Nest.js] 회원가입과 로그인 구현 1

nest cli를 이용한 모듈, 컨트롤러, 서비스 생성 auth 모듈 생성 - nest g module auth auth 컨트롤러 생성 - nest g co auth auth 서비스 생성 - nest g s auth user Entity 생성 import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() password: string; } Repository 생성 import { Injectable } fro..

Nest.js 2023.01.27

[Nest.js] Nest.js + PostgreSQL + typeORM CRUD 구현하기 3

Update와 Read중에 모든 게시물 가져오는 api 만들기 service 코드 import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardStatus } from './board-status.enum'; import { Board } from './board.entity'; import { BoardRepository } from './board.repository'; import { CreateBoardDto } from './dto/create-board.dto'; @Injectable() export class BoardsS..

Nest.js 2023.01.26

[Nest.js] Nest.js + PostgreSQL + typeORM CRUD 구현하기 2

Delete 구현 tymeORM에서 remove()와 delete()의 차이부터 짚고 넘어가려고 한다. remove() - 무조건 존재하는 아이템을 remove 메소드를 이용해서 지워야 한다. 그렇지 않으면 Error(404) delete() 만약 아이템이 존재하면 지우고 존재하지 않으면 아무런 영향이 없다. 이번 delete 구현에서는 delete를 사용하여 구현 하려고 한다. 우선 service 먼저 보자 import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Board } from './board.entity'; import { Bo..

Nest.js 2023.01.26

[Nest.js] Nest.js + PostgreSQL + typeORM CRUD 구현하기 1

정보 공유보단 메모에 가까운 게시글입니다. 참고만 해주시길 양해 부탁 드립니다 ㅠ.ㅠ https://www.youtube.com/watch?v=3JminDpCJNE&t=11247s - 따라하면서 배우는 NestJS 강의를 참고하여 작성하는 Nest + PostgreSQL + typeORM CRUD 구현 우선 DB와 Nest의 연결을 위한 typeorm.config.ts 파일을 configs 폴더 하위에 생성해준다. import { TypeOrmModuleOptions } from '@nestjs/typeorm'; export const typeORMConfig: TypeOrmModuleOptions = { type: 'postgres', host: 'localhost', port: 5432, userna..

Nest.js 2023.01.26

[Nest.js] Providers란?

Providers란? 프로바이더는 Nest의 기본 개념이다. 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼 등 프로바이더로 취급될 수 있다. 프로바이더의 주요 아이디어는 종속성으로 주입할 수 있다는 것. 즉, 객체는 서로 다양한 관계를 만들 수 있으며 객체의 인스턴스를 연결하는 기능은 대부분 Nest 런타임 시스템에 위임 될 수 있다. provider는 단순히 @Injectable() 데코레이터가 달린 클래스이다. @Injectable 데코레이터를 사용하여 Nest IoC 컨테이너에서 관리할 수 있는 클래스임을 선언하는 메타데이터를 첨부할 수 있다. 서비스 서비스는 컨트롤러에서 사용됩니다. 데이터 저장과 출력을 담당하고, 이후 예시인 CatsController에서 사용 될 것이다 /..

Nest.js 2023.01.25

[Nest.js] jest를 이용한 테스트 코드 작성

정보 전달의 포스팅 보단 학습 메모 목적의 포스팅 입니다. 😢 부족한 설명과 내용에 대해 미리 양해 부탁드립니다. npm run test:cov - 코드가 얼마나 테스팅 됐는지 퍼센티지로 알려줌. npm run test:watch - 저장 할 때 마다 테스트를 진행. 유닛 테스트 모든 함수를 따로 테스트 서비스에서 분리된 유닛을 테스트 spec.ts 파일들을 찾아서 테스트 해준다. E2E 테스트 모든 시스템을 테스팅 사용자의 관점에서의 테스팅 우선 유닛 테스트를 진행해보자 유닛테스트 import { NotFoundException } from '@nestjs/common'; import { Test, TestingModule } from '@nestjs/testing'; import { MoviesSer..

Nest.js 2023.01.13
LIST