Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8829

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

$
0
0

はじめに

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

https://subroq.com


Viewing all articles
Browse latest Browse all 8829

Trending Articles