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
파일을 작성한다.import {createConnection} from "typeorm"
createConnection((connection)=> {
console.log('connect!');
}).catch((error) => {
console.log(error);
})
TypeORM
연동을 수행한다.import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
PrimaryGeneratedColumn
은 Primary 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.json
의 script
추가....
"scripts": {
...
"seed": "ts-node ./node_modules/typeorm-seeding/dist/cli.js 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