1. Repository 메소드 Repository는 DB와 상호 작용하는 데 사용되는 주요 도구 중 하나이다. 1. find(conditions?:FindConditions): 지정된 조건에 맞는 모든 엔터티를 검색한다. 특정 조건에 해당하는 모든 사용자를 검색할 수 있다. const users = await userRepository.find({ age: 30 }); 2. findOne(id: any, options?: FindOneOptions): 주어진 조건에 해당하는 단일 엔터티를 검색한다. const user = await userRepository.findOne(1); 3. save(entity: Entity, options?: SaveOptions): 주어진 엔터티를 저장한다. 엔터티가 이..
@Entity(): 엔터티를 정의. 클래스 위에 데코레이터를 추가하여 해당 클래스가 DB의 table과 mapping됨을 나타냄 @PrimaryGeneratedColumn(): Primary Key를 자동으로 생성하는 열을 정의. 자동으로 증가하는 값 @Column(): DB Column을 정의. 엔터티 클래스의 속성 위에 데코레이터를 추가하여 해당 속성이 DB의 Column과 Mapping됨을 나타냄 @OneToMany(): 1:N 관계를 정의. @ManyToOne(): N:1 관계를 정의. @ManyToMany(): N:M을 정의. @JoinColumn(): 관계 열을 정의하는 데 사용. 일대다 또는 다대일 관계에서 Foriegn Key(외래 키) Column의 이름을 지정할 때 사용 @JoinTab..
1. 관계 설정이란? 관계를 설정하는 것은 DB의 테이블 간의 관계를 표현하는 것 관계 설정은 DB 구조를 설계하고 데이터를 조직화하는 중요한 부분이다. 이는 DB의 성능, 일관성, 무결성 등을 보장하는 데 결정적인 역할을 한다. 여러 엔터티가 서로 연결되어 있는 복잡한 시나리오에서는 특히 중요하다. 데이터 일관성: 관계 설정을 통해 데이터 일관성 유지 부모 엔터티와 자식 엔터티 간의 관계를 설정하면 부모 엔터티의 변경이 자식 엔터티에 반영되어 일관된 데이터를 유지할 수 있다. 데이터 무결성: 관계 설정을 통해 데이터 무결성을 유지할 수 있다. 외래 키 제약 조건을 사용하여 DB의 무결성을 보장할 수 있다. 부모 엔터티의 삭제가 자식 엔터티에 영향을 미치지 않도록 외래 키 제약을 설정할 수 있다. 쿼리의..
1. 설치 패키지 설치 npm install typeorm --save TypeScript 애플리케이션에서 런타임에 메타데이터를 관리하기 위한 라이브러리 ==> TypeScript는 데코레이터를 사용하여 클래스, 메서드, 속성 등에 메타데이터를 쉽게 추가할 수 있다. ==> 따라서 설치가 안돼 있다면 설치 권장 npm install reflect-metadata --save 프로젝트에서 사용할 DB 설치 npm install mysql --save // MySQL, MariaDB npm install pg --save // PostgreSQL, CockroachDB npm install sqlite3 --save // SQLite npm install mssql --save // Microsoft SQL..
1. TypeORM이란? Node.js, Browser, React 등에서 실행할 수 있고 TypeScript 및 JavaSript와 함께 사용할 수 있는 ORM(Object Relational Mapping) Active Record와 Data Mapper 패턴을 모두 지원 2. TypeORM의 특징 객체 관계 매핑(ORM): DB 테이블을 JavaScript/TypeScript 클래스와 매핑하여 객체 지향 프로그래밍 스타일로 데이터를 다룰 수 있다. 다양한 DB 지원: MySQL, PostgreSQL, SQLite, MS SQL Server 등 다양한 DB 시스템과 호환 강력한 쿼리 빌더: QueryBuilder를 제공하여 SQL 쿼리를 동적으로 생성할 수 있다. 이를 통해 DB에 대한 복잡한 쿼리를..
1. Middleware HTTP 요청을 처리하는 과정 중간에 실행되는 기능 요청과 응답 객체에 접근하여 요청을 변형하거나 처리하기 전에 특정한 동작을 수행할 수 있다. 인증, 로깅 등을 처리할 수 있다. 요청과 응답 객체를 변경할 수 있다. 요청의 validation을 체크하여 오류 처리를 할 수 있다. 2. 사용법 @injectable 데코레이터를 사용 인터페이스를 implements해서 사용한다. class 내부에 configure를 사용하여 선언. 이때 NestModule 인터페이스를 implements한다. logger.middleware.ts import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Respon..