Maison > interface Web > js tutoriel > Séquelles des migrations

Séquelles des migrations

Linda Hamilton
Libérer: 2024-12-25 08:21:10
original
523 Les gens l'ont consulté

Étant donné le modèle de suite suivant pour la table de métadonnées de mon projet Todo de base, j'aimerais apporter quelques modifications à l'aide des migrations de Sequelize.

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;
  };
Copier après la connexion

Sequelize utilise des fichiers de migration qui ressemblent essentiellement à des validations de base de données. Pour créer un fichier de migration, tapez dans votre ligne de commande :

npx sequelize-cli migration:generate --name data-columns-rename
Copier après la connexion

Cela créera un fichier de migrations avec un modèle dans le dossier /migrations et le nom que vous avez fourni dans la commande ci-dessus (dans ce cas, data-columns-rename.js avec la date/heure actuelle devant).

Fichier de migrations de modèles créé pour vous :

'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');
     */
  }
};
Copier après la connexion

La commande async up est la commande qu'elle exécute pour essayer d'apporter des modifications à la table, et la commande async down s'exécute pour supprimer les modifications. Lorsque vous effectuez vos migrations, assurez-vous que les commandes down sont inversées.

Dans mon cas, j'essaie de modifier le nom de colonne pour certaines informations de base du tableau de type de tâche afin que mon tableau de migrations rempli ressemble à ceci :

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

Copier après la connexion

(Ces changements sont simplement dus au fait que je ne suis toujours pas habitué au boîtier serpent comme le souhaite Postgres)

Une fois la table des migrations prête, exécutez-la avec cette commande

npx sequelize-cli db:migrate
Copier après la connexion

Parmi les autres impressions résultant de l'exécution de la commande, le texte clé pour que je puisse voir le succès est :

== 20241224113716-metadata-columns-rename: migrating =======
== 20241224113716-metadata-columns-rename: migrated (0.065s)
Copier après la connexion

Et vous pouvez voir les modifications vérifiées dans cette capture d'écran de DBeaver :

Sequelize migrations

Faites-moi savoir s'il y a un intérêt pour un article décrivant les bases pour démarrer avec Sequelize.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal