Sequelize を使い始めたときは、単純force:true
にデータベースを開発用に動作させていましたが、テスト/運用に移行した今、これは明らかに適切な選択ではありません。
次のようにコードでスキーマを定義しました。
this.Users = this.sequelize.define('Users', {
email: Sequelize.STRING,
display: Sequelize.STRING,
lastlogin: Sequelize.DATE,
});
this.Patterns = this.sequelize.define('Patterns', {
name: Sequelize.STRING,
type: Sequelize.STRING,
});
this.Patterns.belongsTo(this.Users, {as: 'Owner'});
... //a number of other models and relationships
これをデータベース初期化ワークフローに変える「正しい」方法は何ですか? 特に、これを「init」移行で行うことは理にかなっていると考えています。そうすれば、将来の移行とコードの変更がそれから機能し、将来いつでも移行のスタックを実行できるようになります。完全に最新のスキーマを取得します。
編集:私が検討し、うまくいく可能性が高いものですが、十分に「エレガントな」ソリューションとは思えません。
- 生成された SQL を使用して新しいデータベースを初期化し、キャプチャして、新しいデータベースで
force:true
実行できる「setup.sql」を作成します。 - スキーマ全体を「移行表記法」で書き直します。これは、記述内容は同じですが、構文が厄介なほど異なります。