TypeORM 공식문서를 따라해보며 TypeORM을 이용해 간단한 CRUD를 실습하면서 포스팅을 진행하도록 하겠습니다.
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
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를 저장했다는 것은 알 수 있습니다.
id | firstName | lastName | age |
---|---|---|---|
1 | Timber | Saw | 25 |
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;
}
아주 직관적으로 어떻게 테이블이 생성되는지 알 수 있습니다.
안녕하세요. 글 잘 읽고 따라해보고 있는 TS린이 입니다... 본문을 그대로 따라하는 상황인데 init 시에 ormconfig.json이 생성되지 않습니다. 다른 설정이나 방법이 있는 건가요?