TIL no.92 - TypeORM 시작하기

박준규·2019년 12월 8일
3

TypeORM 공식문서를 따라해보며 TypeORM을 이용해 간단한 CRUD를 실습하면서 포스팅을 진행하도록 하겠습니다.

1. Setting

TypeORM을 설치합니다.

$ npm install typeorm -g

typeorm 프로젝트를 시작합니다. Databse는 MySQL을 사용하겠습니다.

$ typeorm init --name typeorm_practice --database mysql

위 명령어를 실행하면 package.json, tsconfig.json, ormconfig.json같은 여러 설정파일들이 자동으로 생성됩니다.

project dependencies를 설치해줍니다.

$ cd typeorm_practice
$ npm install

ormconfig.json파일에서 database connection configuration options을 설정해줍니다.

{
   "type": "mysql",
   "host": "localhost",
   "port": 3306,
   "username": "test", //여기
   "password": "test", //세곳을
   "database": "test", //고쳐주세요
   "synchronize": true,
   "logging": false,
   "entities": [
      "src/entity/**/*.ts"
   ],
   "migrations": [
      "src/migration/**/*.ts"
   ],
   "subscribers": [
      "src/subscriber/**/*.ts"
   ]
}

저같은 경우에는 database 이름을 "typeorm"으로 지었습니다.

mysql을 실행한 뒤, 다음 명령어로 database를 생성합니다.

mysql> CREATE DATABASE typeorm CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci

2. CRUD

package.json을 보면 다음 항목이 있습니다.

"scripts": {
      "start": "ts-node src/index.ts"
   }

src/index.ts를 살펴보겠습니다.

import "reflect-metadata";
import {createConnection} from "typeorm";
import {User} from "./entity/User";

createConnection().then(async connection => {

    console.log("Inserting a new user into the database...");
    const user = new User(); //Create
    user.firstName = "Timber";
    user.lastName = "Saw";
    user.age = 25;
    await connection.manager.save(user); //Update
    console.log("Saved a new user with id: " + user.id); //Read

    console.log("Loading users from the database...");
    const users = await connection.manager.find(User);
    console.log("Loaded users: ", users); //Read

    console.log("Here you can setup and run express/koa/any other framework.");

}).catch(error => console.log(error));

코드를 한줄 한줄 정확하게 이해할 수는 없지만
User라는 table에 다음과 같은 record를 저장했다는 것은 알 수 있습니다.

idfirstNamelastNameage
1TimberSaw25

User라는 테이블을 어떻게 만들었는지 살펴보겠습니다.
src/entity/User.ts 파일을 열면 다음과 같습니다.

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

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    age: number;
}

아주 직관적으로 어떻게 테이블이 생성되는지 알 수 있습니다.

profile
devzunky@gmail.com

1개의 댓글

comment-user-thumbnail
2022년 4월 29일

안녕하세요. 글 잘 읽고 따라해보고 있는 TS린이 입니다... 본문을 그대로 따라하는 상황인데 init 시에 ormconfig.json이 생성되지 않습니다. 다른 설정이나 방법이 있는 건가요?

답글 달기