본문 바로가기

TypeORM9

[TypeORM] Using Validation https://orkhan.gitbook.io/typeorm/docs/validation class-validator를 사용하는 예시 import { Entity, PrimaryGeneratedColumn, Column } from "typeorm" import { Contains, IsInt, Length, IsEmail, IsFQDN, IsDate, Min, Max, } from "class-validator" @Entity() export class Post { @PrimaryGeneratedColumn() id: number @Column() @Length(10, 20) title: string @Column() @Contains("hello") text: string @Column() @IsIn.. 2023. 9. 4.
[TypeORM] Relations https://orkhan.gitbook.io/typeorm/docs/relations What are relations 1. @OneToOne 2. @ManyToOne 3. @OneToMany 4. @ManyToMany Relation options 관계 설정을 위해 처리하는 옵션 eager: booleam - true로 처리되면 메인 엔티티를 로드할 때 연관된 엔티티가 같이 로드 된다. QueryBuilder나 find* 메소드 사용시. casecade: boolean | ("insert | "update")[] - true로 처리되면 연관된 엔티티가 DB에 추가되고 업데이트 된다. 배열을 통해 옵션을 넘기는 것도 가능하다. onDelete: "RESTRICT" | "CASCADE" | "SET NU.. 2023. 9. 4.
[TypeORM] Many-to-one / one-to-many relations https://orkhan.gitbook.io/typeorm/docs/many-to-one-one-to-many-relations 예시를 보자 user는 다수의 photos를 가질 수 있다. 하지만 각 포토는 하나의 싱글 유저에게 귀속된다. import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from "typeorm" import { User } from "./User" @Entity() export class Photo { @PrimaryGeneratedColumn() id: number @Column() url: string @ManyToOne(() => User, (user) => user.photos) user: User } import {.. 2023. 9. 4.
[TypeORM] One-to-one relations https://orkhan.gitbook.io/typeorm/docs/one-to-one-relations OneToOne 관계는 A가 오직 하나의 B 인스턴스를 가진다. 그리고 B는 오직 하나의 A 인스턴스를 가진다. 다음 예시는 User와 Profile의 관계이다. User는 하나의 Profile을 가지고 하나의 Profile은 하나의 User를 가진다. import { Entity, PrimaryGeneratedColumn, Column } from "typeorm" @Entity() export class Profile { @PrimaryGeneratedColumn() id: number @Column() gender: string @Column() photo: string } import { E.. 2023. 9. 3.
[TypeORM] Find Options - Advanced options https://orkhan.gitbook.io/typeorm/docs/find-options TypeORM은 많은 build in 연산자를 지원한다. - Not import { Not } from "typeorm" const loadedPosts = await dataSource.getRepository(Post).findBy({ title: Not("About #1"), }) SELECT * FROM "post" WHERE "title" != 'About #1' - LessThan import { LessThan } from "typeorm" const loadedPosts = await dataSource.getRepository(Post).findBy({ likes: LessThan(10), }) .. 2023. 9. 2.
[TypeORM] EntityManager API https://orkhan.gitbook.io/typeorm/docs/entity-manager-api dataSource - EntityManager에 의해 사용된다. const dataSource = manager.dataSource queryRunner - EntityManager에 의해 사용된다. EntityManager의 트랜잭션 인스턴스에서만 사용된다. const queryRunner = manager.queryRunner transaction - 많은 데이터베이스 요청이 처리되는 곳에 트랜잭션을 제공한다. await manager.transaction(async (manager) => { // NOTE: you must perform all database operations using th.. 2023. 9. 2.
[TypeORM] What is EntityManager and Repository https://orkhan.gitbook.io/typeorm/docs/working-with-entity-manager https://orkhan.gitbook.io/typeorm/docs/working-with-repository What is EntityManager EntityManager를 사용하여 entity를 관리할 수 있다. EntityManager는 단지 단일 공간 내에 모든 엔티티 레포지토리의 집합이다. 데이터소스를 통해 entityManager에 접근할 수 있다. import { DataSource } from "typeorm" import { User } from "./entity/User" const myDataSource = new DataSource(/*...*/) const u.. 2023. 8. 31.
[TypeORM] Working with DataSource https://orkhan.gitbook.io/typeorm/docs/data-source What is DataSource 데이터 소스를 설정해야 DB와 소통이 가능하다. 데이터베이스 연결 설정 정보를 가지고 잇고 초기 데이터베이스 연결이나 커넥션 풀 설립을 담당한다. 초기 연결 설립, 커넥션 풀 설립을 위해 initialize 메소드를 호출해야 한다. destroy 메소드가 불릴 때, 연결이 끊긴다. 일반적으로 어플리케이션 bootstrap에서 initialize 메소드를 호출한다. DB와 완전히 처리가 끝난 이후에 destroy를 호출한다. 예를 들어 백엔드 개발을 하고 있고 서버가 닫히지 않는다면, destroy를 절대 호출되지 않는다. Creating a new DataSource 데이타소스 인.. 2023. 8. 30.
[TypeORM] DataSource API https://orkhan.gitbook.io/typeorm/docs/data-source-api dataSource.isInitialized 데이터소스 초기화와 데이터베이스 연결, 커넥션 풀 여부 dataSource.driver 데이터 소스에서 사용된 기본 DB 드라이버 dataSource.manager 엔티티 매니저 dataSource.mongoManager 몽고DB 매니저 await dataSource.initialize() 데이터소스 초기화, DB 커넥션 풀을 연다. await dataSource.destroy() 데이터 소스 종료 및 모든 DB커넥션을 종료한다. 주로 어플리케이션 종료시 사용 await dataSource.synchronize() 데이터베이스 스키마를 동기화한다. 데이터소스 옵션.. 2023. 8. 30.