68

Sequelize と Sequelize CLI を使い始めたばかりです

開発時期なので、カラムの追加や削除が頻繁にあります。新しい列を既存のモデルに追加する最良の方法は何ですか?

たとえば、Todoモデルに「完了」という新しい列を作成したいとします。この列を models/todo.js に追加します。次のステップは?

私は試したsequelize db:migrate

動作していません: 「移行は実行されませんでした。データベース スキーマは既に最新の状態でした。」

4

7 に答える 7

8

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'
    );
  }
}

以下のようなインテリセンスを提供します インテリセンスを続編する

于 2019-06-11T08:12:41.857 に答える
6

もちろん、値を追加しないデフォルトオプションと、強制または変更属性を追加するインスタンスの2つのオプションを持つオブジェクトパラメーターを取る同期関数を引き続き使用できます。したがって、この場合は次を使用しますUserModel.sync({ force: true })。これにより、テーブルが作成され、既に存在する場合は最初に削除されます

UserModel.sync({ alter: true })

これは、データベース内のテーブルの現在の状態 (どの列があるか、そのデータ型は何かなど) をチェックし、テーブルに必要な変更を実行して、モードに一致させるようにします...これを使用できますモデル インスタンスを使用する場合 更新およびテーブルとモデルの詳細については、こちらのその他の機能に関するドキュメントをご覧ください。

于 2020-07-20T12:04:06.390 に答える