TypeORM 다루기

Dunde·2021년 11월 16일
1

TypeORM

목록 보기
1/1
post-thumbnail
  • typescript & javascript(ES5, 6, 7) 용 ORM.
  • MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL 데이터베이스를 지원한다.

간단 사용법

준비

  • typescript, typeorm, 사용할 서버(express 등)

설정 파일

{
  "type": "mysql",		//데이터베이스 타입
  "host": "localhost",		//주소
  "port": 3306,			//포트번호
  "username": "username",	//DB접속 아이디
  "password": "password",	//DB접속 비밀번호
  "database": "database_name",	//데이터베이스 이름
  "synchronize": true,		//동기화 여부
  "logging": false,		//로그출력 여부
  "entities": [			//엔티티 파일 경로
    "src/entity/**/*.ts"
  ],
  "migrations": [		//마이그래이션 파일 경로
    "src/migration/**/*.ts"
  ],
  "subscribers": [		//구독 파일 경로
    "src/subscriber/**/*.ts"
  ],
  "seeds": [			//시드 파일 경로
    "src/seeds/**/*.seed.ts
  ],
}
  • 최상위 폴더에 ormconfig.json 파일을 작성한다.

Connection 설정

import {createConnection} from "typeorm"

createConnection((connection)=> {
  console.log('connect!');  
}).catch((error) => {
  console.log(error);
})
  • 서버에서 TypeORM 연동을 수행한다.

Entity 설정

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class User {
  
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;
}
  • 엔티티 양식은 위과 같다.
  • PrimaryGeneratedColumnPrimary key가 되며 값을 주지 않아도 자동으로 1씩 증가한 값으로 들어가게 된다.

사용하기

const repository = connection.getRepository(User);

const user = new User();
user.name = "dunde";

await repository.save(user);	//save in database

const allUsers = await repository.find();	// find all
const firstUser = await repository.findOne(1); // find by id
const dunde = await repository.findOne({ name: "dunde" });
//find by name

await repository.remove(dunde);	//remove dunde

시드 넣기

  • 시드란 미리 데이터베이스에 넣는 데이터를 말한다.

준비

  • typeorm-seeding, ts-node 패키지 설치
  • ormconfig.json 파일에 seeds 경로 추가 (위쪽 참고)
  • package.jsonscript 추가.
...
"scripts": {
  ...
  "seed": "ts-node ./node_modules/typeorm-seeding/dist/cli.js seed"
}
...

seed 파일 작성

import { Factory, Seeder } from "typeorm-seeding";
import { Connection } from "typeorm";
import { User } from "../entity/User";

export default class CreateUsers implements Seeder {
  public async run(factory: Factory, connection: Connection): Promise<any> {
    const userData = [
      { name: "dunde" },
      { name: "horangyee" },
      { name: "saja" }
    ];
    
    await connection.getRepository(User).save(userData);
  }
}
  • 시드파일 작성 후 npm run seed 명령어를 통해 데이터베이스에 넣어주면 된다.




내용 참고
: 공식 문서
: typeorm-seeding

profile
개발 시작!

0개의 댓글