Heim > Web-Frontend > js-Tutorial > Migrationen weiterverfolgen

Migrationen weiterverfolgen

Linda Hamilton
Freigeben: 2024-12-25 08:21:10
Original
523 Leute haben es durchsucht

Angesichts des folgenden Sequelize-Modells für die Metadatentabelle meines grundlegenden ToDo-Projekts möchte ich mithilfe der Sequelize-Migrationen einige Änderungen vornehmen.

module.exports = (sequelize, Sequelize) => {
    const Metadata = sequelize.define("metadata", {
      id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
      },     
      urgencyId: {
        type: Sequelize.INTEGER,
        allowNull: true
      },      
      dataId: {
        type: Sequelize.INTEGER,
        allowNull: true
      },      
      taskTypeId: {
        type: Sequelize.INTEGER,
        allowNull: true
      },  
      projectId: {
        type: Sequelize.INTEGER,
        allowNull: true
      },
      data_id: {
        type: Sequelize.INTEGER,
        allowNull: true
      },    
    });
    Metadata.associate = function (models) {
      Metadata.belongsTo(models.data,{
        foreignKey: {
          name: 'data_id',
          allowNull: false,
          hooks: true
        },
        onDelete: 'cascade'

      });

    };

    return Metadata;
  };
Nach dem Login kopieren

Sequelize verwendet Migrationsdateien, die im Wesentlichen wie Datenbank-Commits sind. Um eine Migrationsdatei zu erstellen, geben Sie in Ihrer Befehlszeile Folgendes ein:

npx sequelize-cli migration:generate --name data-columns-rename
Nach dem Login kopieren

Dadurch wird eine Migrationsdatei mit einer Vorlage im Ordner /migrations und dem Namen erstellt, den Sie im obigen Befehl angegeben haben (in diesem Fall data-columns-rename.js mit dem aktuellen Datum/der aktuellen Uhrzeit davor).

Für Sie erstellte Vorlagenmigrationsdatei:

'use strict';

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up (queryInterface, Sequelize) {
    /**
     * Add altering commands here.
     *
     * Example:
     * await queryInterface.createTable('users', { id: Sequelize.INTEGER });
     */
  },

  async down (queryInterface, Sequelize) {
    /**
     * Add reverting commands here.
     *
     * Example:
     * await queryInterface.dropTable('users');
     */
  }
};
Nach dem Login kopieren

Der Befehl async up ist der Befehl, der ausgeführt wird, um zu versuchen, Änderungen an der Tabelle vorzunehmen, und der Befehl async down wird ausgeführt, um die Änderungen zu entfernen. Stellen Sie beim Durchführen Ihrer Migrationen sicher, dass die Abwärtsbefehle umgekehrt sind.

In meinem Fall versuche ich, einige Änderungen an den Spaltennamen für einige grundlegende Tabelleninformationen vom Typ „ToDo“ vorzunehmen, damit meine ausgefüllte Migrationstabelle wie folgt aussieht:

'use strict';

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up (queryInterface, Sequelize) {
    await queryInterface.removeColumn('metadata','dataId')
// renameColumn: table, old column name , new column name
    await queryInterface.renameColumn('metadata','urgencyId','urgency_id')
    await queryInterface.renameColumn('metadata','taskTypeId','task_type_id')
    await queryInterface.renameColumn('metadata','projectId','project_id')

  },

  async down (queryInterface, Sequelize) {
    await queryInterface.addColumn('metadata','dataId', {
      type: Sequelize.INTEGER,
      allowNull: false
    })
    await queryInterface.renameColumn('metadata','urgency_id','urgencyId')
    await queryInterface.renameColumn('metadata','task_type_id','taskTypeId')
    await queryInterface.renameColumn('metadata','project_id','projectId')
  }
};

Nach dem Login kopieren

(Diese Änderungen sind einfach darauf zurückzuführen, dass ich es immer noch nicht gewohnt bin, den Fall so zu gestalten, wie es von Postgres gewünscht wurde)

Sobald die Migrationstabelle fertig ist, führen Sie sie mit diesem Befehl aus

npx sequelize-cli db:migrate
Nach dem Login kopieren

Neben anderen Ausdrucken bei der Ausführung des Befehls lautet der Schlüsseltext für mich, der den Erfolg erkennt:

== 20241224113716-metadata-columns-rename: migrating =======
== 20241224113716-metadata-columns-rename: migrated (0.065s)
Nach dem Login kopieren

Und Sie können die überprüften Änderungen in diesem Screenshot von DBeaver sehen:

Sequelize migrations

Lassen Sie mich wissen, wenn Interesse an einem Beitrag besteht, der die Grundlagen für den Einstieg in Sequelize beschreibt.

Das obige ist der detaillierte Inhalt vonMigrationen weiterverfolgen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage