LoginSignup
3
2

More than 3 years have passed since last update.

Sequelizeでdevelopment/production用のseedを分けたい

Posted at

はじめに

node.jsでサーバサイドの処理を作成するときにORMとして、Sequelizeを利用しています。

その際に、開発用と本番用でseedを分けて管理したくなったので、それについて書かせていただきます。

どのようなケースか?

例えば、以下のようなテーブルがあった場合、

id, request_url

開発用にseedで作成するデータは、このようになります。

1, http://localhost:3000/user
2, http://localhost:3000/login
3, http://localhost:3000/company

しかし、これは開発用のデータのため、本番でこのseedを実行しても、うまくアプリケーションが動かないです。

そのため、本番用のseedでは、ドメインを指定して、データを作成したい。

1, https://api.subroq.com/user
2, https://api.subroq.com/login
3, https://api.subroq.com/company

このようなケースです。

どのように対応するのか?

対応方法としては、seedを分けて、実行時にフォルダを指定します。

フォルダ構成としては、こんな感じ。

seeders/
├── development
│   ├── 20200808080637-users.js
│   ├── 20200808101006-categories.js
│   ├── 20200808101050-questions.js
│   └── 20200911180200-validations.js
└── production
    ├── 20200808101006-categories.js
    ├── 20200808101050-questions.js
    └── 20200911180200-validations.js

seedを実行する際にフォルダの指定をすれば、うまいこと動きます。

開発用

NODE_ENV="development" node_modules/.bin/sequelize db:seed:all --seeders-path "seeders/production"

本番用

NODE_ENV="production" node_modules/.bin/sequelize db:seed:all --seeders-path "seeders/production"

最後に

seedの管理は非常に大事で、これを怠ったことで、環境構築ができなくなったり、難しくなったりすることが多々あります。
それを防ぐためにも、利用しているORMを理解して、それに合わせた管理をするのが大事だと思います。

Subroqは、企業のフリーランスエンジニアの採用や活用を支援するサービスを提供しております。また、フリーランスエンジニア向けの記事も書いておりますので、興味ある方は是非、ご一読いただければと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2