typeorm-model-generator는 아래와 같이 여러 db engine을 지원합니다.
Microsoft SQL Server
PostgreSQL
MySQL
MariaDB
Oracle Database
SQLite
우선 typeorm-model-generator를 설치합니다.
npm i -g typeorm-model-generator
사용법은 다음과 같습니다.
Usage: typeorm-model-generator -h <host> -d <database> -p [port] -u <user> -x
[password] -e [engine]
Options:
--help Show help [boolean]
--version Show version number [boolean]
-h, --host IP address/Hostname for database server
[default: "127.0.0.1"]
-d, --database Database name(or path for sqlite) [required]
-u, --user Username for database server
-x, --pass Password for database server [default: ""]
-p, --port Port number for database server
-e, --engine Database engine
[choices: "mssql", "postgres", "mysql", "mariadb", "oracle", "sqlite"]
[default: "mssql"]
-o, --output Where to place generated models
[default: "./output"]
-s, --schema Schema name to create model from. Only for mssql
and postgres. You can pass multiple values
separated by comma eg. -s scheme1,scheme2,scheme3
--ssl [boolean] [default: false]
예를 들면 다음과 같습니다.
typeorm-model-generator -h localhost -d test -p 3306 -u root -x root -e mysql -o ./generated_models
create table cat
(
id int auto_increment
primary key,
name varchar(255) not null comment '고양이 이름',
age int not null comment '고양이 나이',
breed varchar(255) not null comment '고양이 종류'
);
소스 생성
Nestjs의 Generator(소스 자동 생성)를 사용하여 cats module을 생성합니다.
nest g resource cats
resource 옵션은 module, controller, service, entities, dto를 한 번에 자동으로 생성합니다.
SYNCRONIZE는 객체와 테이블을 동기화 할때 사용합니다. 즉, 객체가 변경되면 테이블에 자동 반영이 되고, 테이블이 변경되면 객체가 자동 변경되는 기능입니다. 이 기능을 운영서버에서 사용할 때는 주의가 필요합니다. 운영중인 데이터는 용량이 크고, 이런 변화가 있을 경우 문제가 생길 수 있으므로, 만약의 사고를 예방하기 위해서는 이 기능을 "false"로 설정하는 것이 좋습니다.
ENTITIES는 객체가 위치하는 폴더를 의미합니다. 즉, 테이블의 schema를 객체로 만들어 저장하는 파일들이 위치하는 곳입니다.
셋팅이 완료되면 다음과 같이 최상위 모듈에 ormConfig를 추가해 줌으로써 사용이 가능하게 됩니다.