個人的 TypeORM 導入コピペ集


パッケージを入れる

基本的には、以下を入れる。

$ npm i typeorm reflect-metadata
$ npm i @types/node typescript ts-node tsconfig-paths --save-dev

MySQL を使うなら

$ npm i mysql

PostgreSQL を使うなら

$ npm i pg

あとバリデが必要なら

npm i class-validator --save-dev

あたりを入れる。

npm scripts に typeorm をつくる

"scripts": {
  "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
}

とかしておくと

$ npm run typeorm migration:run

とか

$ npm run typeorm migration:generate -- -n InitialSchema

とかできて便利な気がする。

tsconfig.json

まあ target とかは、よしなに変える。

{
  "compilerOptions": {
    "target": "es2015",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "moduleResolution": "node",
    "baseUrl": "./",
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

大事なのは experimentalDecorators と emitDecoratorMetadata が true になっていること。

ormconfig.js

環境変数は、dotenv とか使うと良いと思う。

module.exports = {
  type: 'mysql',
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  charset: process.env.DB_CHARSET,
  timezone: process.env.DB_TIMEZONE,
  entities: ['./src/models/entities/*.ts'],
  migrations: ['./src/models/migrations/*.ts'],
  cli: {
    entitiesDir: './src/models/entities',
    migrationsDir: './src/models/migrations'
  }
}

ちなみに .env.example は、こんな感じ。

DB_HOST=
DB_PORT=3306
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=
DB_CHARSET=utf8mb4
DB_TIMEZONE=utc

一言

以上、個人的メモでした。