-
009_TypeORM을 NestJS에 연결 - 1> Backend/NestJS 2022. 5. 27. 14:39
이번에는 TypeORM을 NestJS에 적용해보겠습니다.
우선, 새로운 프로젝트가 되나 Report와 User로 각각 저번처럼 하나씩 만들어줍니다.
(나중에 여기에 추가할 예정)
코드를 작성하기전에, 우선 개념부터 잡아봅시다.
TypeORM는 ORM 기술로, Entity Instance와 DB를 Mapping하여 DB를 편리하게 사용 할 수 있는 기능입니다.기존 DB 같은 경우 [Select * From TableName Where name =1 ] 이런식이였으면, TypeORM을 사용하면, 객체.findOne({값}) 이런 식으로 작성 할 수 있습니다. TypeORM은 아래와 같이 다양한 DB에 적용가능합니다.
RDBMS : MySQL / MariaDB / Postgres / SQLite / Microsoft SQL Server / Oracle ...
NoSQL : MongoDB
그리고, DB는 Sqlite를 사용할 예정입니다 (RDMBS이지만, 서버가 아닌 응용프로그램 형태의 가벼운 DB)
이제 라이브러리를 설치해봅시다.
npm install @nestjs/typeorm typeorm sqlite3
사용하기 위해 연동시켜주는 모듈 설명
- @nestjs/typeorm - Nest.js에서 TypeORM을 사용하기 위해 연동시켜주는 모듈
- typeorm - 실제 TypeORM(TypeORM은 JavaScript를 지원합니다)
- sqlite3 - sqlite 데이터베이스 연결 시 사용
============================================================================
설치가 다 되었으면, 해당 프로젝트에서 사용할 거라고 명시해줘야 하기때문에, app.module.ts에 import 하고 사용해봅시다.
우선 import 하는 부분에 아래와같이 import 해줍니다.
이후, imports에 아래와 같이 작성합니다.
이렇게하면, 최상위인 app.module에 설치한 TypeOrm이 하부 User, Report에서도 사용가능해집니다.
(따로 import 할 필요 X)
이후, npm run start:dev --watch통해 app을 구동하면, Project 내부에 db.sqlite라는 파일이 자동적으로 생성됩니다.
이렇게되면, 이제 1차적인 준비가 완료되었고, 바로 이어서 TypeORM의 주요 개념인 Entity Instance 생성해보겠습니다.
============================================================================
Entity 생성하기 위해서는 아래와 같은 과정을 거쳐야합니다.
1. Entity.ts 파일을 생성하고 내부에 Entity가 가져야할 Properties를 정의한 Class를 생성
2. Entity와 Parent Module과 연결 (이 과정에서 자동적으로 Repository를 생성)
3. Entity와 Root (App Module)를 연결
과정은 쉬워보입니다...
우선 TypeORM를 사용하는 경우 따로 Repository를 생성하지 않아도 됩니다.
Src > User 파일에 user.entity.ts 파일을 생성하고, 내부에 Properties를 정의해줍니다.
여기서 눈여겨 봐야할 Decorators는 @Entity(), @PrimaryGeneratedColumn() @Column() 입니다. 아래 3부분 (After..)는 일단 그냥 있다고 알아만 두셔도 됩니다.
===================
@Entity - 해당 클래스는 DB user 테이블과 매핑시킬 때 사용
@PrimaryGeneratedColumn - 처음 생성될 Column
@Column - 해당 클래스 속성과 DB user 테이블 컬럼과 매핑시킬 때 사용
===================
@AfterInsert() - 인서트된 이후에 보여짐
@AfterUpdate() - 업데이트된 이후에 보여짐
@AfterRemove() -삭제된 이후에 보여짐
이제 생성된 db.sqlite 를 한번 확인해보겠습니다.
해당 파일을 확인하기 위해서는 IntelliJ의 marketplace에서 sqlite을 치면 제일 위에서 나오는 친구를 다운로드 받습니다.
해당 파일을 받으면 DB를 확인할 수 있게 되는데, user.entity.ts class 에서 만든 properties 정보가 DB에서 보이게 됩니다.
위의 사진을 보시면, 이해하기 편해집니다.
좌측에 있는 Class User (user.entity.ts)에서 만들어진 properties가 SQL DB에 담기게 됩니다.
============================================================================
우선 main.ts에서 validation pipe를 연결해줍니다.
이후, Users.Controller.ts로 이동해서 createUser() 를 만들고, 아래와 같이 작성합니다.
controller에 createUser()는 body를 받을 예정인데, body에서 특정 값만을 받기위해서 create.user.dto 를 생성해줍니다
이전에 설명했던 내용이여서, 해당 부분은 넘어가도록 하겠습니다.
그리고, dto를 Controller의 import하고 해당 부분을 (@Body() body: CreateUserDto) 로 작성합니다.
( @Body() body: CreateUserDto ) → (@Body() body: 넘겨져오는 Body를 body로 설정하고 body는 CreateUserDto의
특징을 가져야합니다 (TS 특징))
해당부분으로 테스트해보면,
위의 사진과 같이 값이 노출됩니다.
'> Backend > NestJS' 카테고리의 다른 글
20221222Thu_공부 일지 (0) 2022.12.23 20221221Wed_공부 일지 (0) 2022.12.22 007_NestJS_Service 와 Repository (0) 2022.05.18 006_NestJS_Pipes를 활용한 Validation Check (0) 2022.05.16 005_NestJS_NestJS CLI를 사용한 Controller 만들기 (0) 2022.05.16