체인의정석

Nest.js) type ORM , entities 정의하기 본문

개발/backend

Nest.js) type ORM , entities 정의하기

체인의정석 2021. 10. 18. 13:12
728x90
반응형

type ORM에서 entities 가 들어가게 되는데,

entities 는 데이터베이스가 어떻게 구성되어있는지 알려주는 부분으로 보면 된다.

 

아래와 같이 name에 테이블의 이름을 넣고,

synchromize에 false를 두면 이미 완성된 테이블을 기준으로 연결을 시킬 수 있다.

 

이미 완성된 테이블에 연결을 하는 경우 typeORM에서 어떤 데이터베이스 인지 알아야 하므로, 아래와 같이 모든 칼럼을 다 정의해 주어야 한다. 각 칼럼의 이름과, 자료형을 모두 정의해 주어야 어떤 데이터가 들어올 수 있을지 알 수 있다.

import { Entity, Column, PrimaryGeneratedColumn, PrimaryColumn } from 'typeorm';

@Entity({ name: 'transactions2', synchronize: false })
export class Addresses {
  @PrimaryGeneratedColumn('rowid')
  id: number;

  @PrimaryColumn()
  hash: string;

  @Column()
  nonce: string;

  @Column()
  from_address: string;

  @Column()
  to_address: string;

  @Column({ default: true })
  isActive: boolean;
}

 

 

아래 보이는 부분이 정말 잘 나와있는것 같다.

https://medium.com/crocusenergy/nestjs-typeorm-%EA%B8%B0%EB%B3%B8-crud-%EC%9E%91%EC%84%B1%ED%95%98%EA%B8%B0-69b9640dc826

 

[NestJS] TypeORM 기본 CRUD 작성하기

지난 시간에는 [NestJS] 그 외 기본 개념들 을 살펴보았다. 이번 시간에는 NestJS 에서 TypeORM 을 사용하는 방법을 알아보도록 하겠다. 기본적인 CRUD 를 통해 알아보도록 할텐데 지난 포스팅에서 Postgre

medium.com

 

근데 소수점과 같은 경우 어떻게 해야할까?

https://github.com/typeorm/typeorm/issues/1673

 

How to wirte 'decimal(5,2)' in entity? · Issue #1673 · typeorm/typeorm

Issue type: [ ] question Database system/driver: [ ] mysql / mariadb TypeORM version: [ ] latest How to wirte 'decimal(5,2)' in entity?: I want to set the field in the table. the field type...

github.com

다음과 같은 글에서 답을 찾을 수 있었다.

 

  @Column('decimal', { precision: 38, scale: 0 })
  value: number;

다음과 같이하면 decimal(38,0) 자료형이 가능하다고 한다.

 

자료형을 끝까지 다 쓰면 entities 가 완성되게 된다.

완성된 entities 는 app.module.ts에 추가해주면 끝!

    TypeOrmModule.forRoot({
      type: 'mysql', 
      host: process.env.DB_HOST, 
      port: +process.env.DB_PORT, 
      username: process.env.DB_USERNAME, 
      password: process.env.DB_PASSWORD, 
      database: process.env.DB_NAME, 
      synchronize: false,  //기존에 존재하는 DB와 연동하기 때문.
      logging: true, 
      entities: [Addresses],
    }),
728x90
반응형
Comments