Sequelize と Sequelize CLI を使い始めたばかりです
開発時期なので、カラムの追加や削除が頻繁にあります。新しい列を既存のモデルに追加する最良の方法は何ですか?
たとえば、Todoモデルに「完了」という新しい列を作成したいとします。この列を models/todo.js に追加します。次のステップは?
私は試したsequelize db:migrate
動作していません: 「移行は実行されませんでした。データベース スキーマは既に最新の状態でした。」
Sequelize と Sequelize CLI を使い始めたばかりです
開発時期なので、カラムの追加や削除が頻繁にあります。新しい列を既存のモデルに追加する最良の方法は何ですか?
たとえば、Todoモデルに「完了」という新しい列を作成したいとします。この列を models/todo.js に追加します。次のステップは?
私は試したsequelize db:migrate
動作していません: 「移行は実行されませんでした。データベース スキーマは既に最新の状態でした。」
vscode で作業している場合は、移行ファイルに型定義を追加できます。これは、QueryInterface と Sequelize が提供するすべてのメソッドを識別するのに役立ちます。
module.exports = {
/**
* @typedef {import('sequelize').Sequelize} Sequelize
* @typedef {import('sequelize').QueryInterface} QueryInterface
*/
/**
* @param {QueryInterface} queryInterface
* @param {Sequelize} Sequelize
* @returns
*/
up: function(queryInterface, Sequelize) {
// logic for transforming into the new state
return queryInterface.addColumn(
'Todo',
'completed',
Sequelize.BOOLEAN
);
},
down: function(queryInterface, Sequelize) {
// logic for reverting the changes
return queryInterface.removeColumn(
'Todo',
'completed'
);
}
}
もちろん、値を追加しないデフォルトオプションと、強制または変更属性を追加するインスタンスの2つのオプションを持つオブジェクトパラメーターを取る同期関数を引き続き使用できます。したがって、この場合は次を使用しますUserModel.sync({ force: true })
。これにより、テーブルが作成され、既に存在する場合は最初に削除されます
UserModel.sync({ alter: true })
これは、データベース内のテーブルの現在の状態 (どの列があるか、そのデータ型は何かなど) をチェックし、テーブルに必要な変更を実行して、モードに一致させるようにします...これを使用できますモデル インスタンスを使用する場合 更新およびテーブルとモデルの詳細については、こちらのその他の機能に関するドキュメントをご覧ください。