Help us understand the problem. What is going on with this article?

個人的 TypeORM 導入コピペ集

More than 1 year has passed since last update.

パッケージを入れる

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

$ 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

一言

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

0x50
コーダーです。インターフェイス周りのデザインや実装をやります。フロントエンドからサーバーサイドまで、色んな領域に足を突っ込んでは引き抜いてを繰り返しています。
http://p1ch.jp
dena_coltd
    Delight and Impact the World
https://dena.com/jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away