見出し画像

TypeScriptでSequelizeを設定する手順

はじめに

node.jsで利用できる代表的なORMにTypeORMとSequelizeがあります。

TypeORMはデフォルトでTypeScriptのサポートが充実しているのですが、Sequelizeの方が非常に使い勝手が良いと感じます。

StackShareというツールの比較サイトでも圧倒的にSequelizeが人気です。

画像1

しかし、Sequelizeの欠点はTypescriptの設定手順がデフォルトでサポートされていない事です。

さらに、Typescriptで設定する手順を全て記述しているサイトも非常に少なく、SequelizeをTypesScriptで利用できるまでにかなりの時間がかかりました。

周囲を見渡してもSequelizeを利用したいがTypeScriptの設定につまるので我慢してTypeORMを使っている方をなどもいるようなのでSequelizeをTypeScriptで利用する手順を紹介することにしました。

TypescriptでSequelizeを設定する手順

TypescriptでSequelizeを利用する場合,`sequelize-typescript`というライブラリを利用すると型を利用したモデル定義が可能となり非常に便利です。

今回はsequelize-typescript(https://www.npmjs.com/package/sequelize-typescript)を利用して設定を記述します。


プロジェクトの準備


任意のプロジェクトルートで、npmとtypescriptの設定をしてください。
まだ設定されていない場合は`npm init`と`tsc --init`で設定ファイルを生成できます。

 `sequelize`, `sequelize-typescript`, `sequelize-cli`と関連ライブラリのインストール

* この記事を記述時点で互換性のあるsequelizeのバージョンは`sequelize@5`となっています。`sequelize@6`はsequelize-typescriptと互換性がまだないようです。

npm install sequelize@5
npm install @types/bluebird @types/node @types/validator
npm install reflect-metadata
npm install sequelize-typescript
npm install mysql2
npm install -g sequelize-cli@5

tsconfig.jsonの設定

`tsconfig.json`のcompilerOptionsに
以下の内容を追加します。

"target": "es6", // or a more recent ecmascript version
"experimentalDecorators": true,
"emitDecoratorMetadata": true

実際の`tsconfig.json`の例

{
 "compilerOptions": {
   "module": "commonjs",
   "declaration": true,
   "removeComments": true,
   "emitDecoratorMetadata": true,
   "experimentalDecorators": true,
   "target": "es6",
   "sourceMap": true,
   "outDir": "./dist",
   "baseUrl": "./",
   "incremental": true
 },
 "exclude": ["node_modules", "dist"]
}

Sequelizeのディレクトリ設定

typescriptでsequelizeを利用する場合、コンパイルされるソースコードと実行ファイルが別となるため、適切にディレクトリ構成を作成する必要があります。

今回は`src`ディレクトリにtypescriptのソースコードを配置していき、`src/db`配下にsequelizeのファイルを記述します。

mkdir -p src/db
cd src/db
sequelize init

動作確認に使うスクリプトファイルを生成しておきます。

touch src/main.ts

sequelizeのディレクトリが生成され、以下のような構成になります。

src
├── db
│   ├── config
│   │   └── config.json
│   ├── migrations
│   ├── models
│   │   └── index.js
│   └── seeders
└── main.ts


* 動作確認をしたのはMacPC環境です。

* 以下の設定手順を完了したテンプレートプロジェクトを作成しました。こちらのgithubのリンクを参考にしてみてください。

ここから先は

6,064字

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?