Изменение имен полей в TypeORM: методы и примеры кода

В этой статье блога мы рассмотрим различные методы изменения имен полей в TypeORM, популярной библиотеке объектно-реляционного сопоставления (ORM) для TypeScript и JavaScript. Переименование полей в таблице базы данных может оказаться сложной задачей, особенно если речь идет о существующей рабочей базе данных. Однако TypeORM предоставляет несколько методов для беспрепятственной обработки изменений имен полей. Мы обсудим эти методы и приведем примеры кода, демонстрирующие их реализацию.

Методы изменения имен полей:

  1. Миграция базы данных вручную:

    • Шаг 1. Создайте новый файл миграции с помощью интерфейса командной строки TypeORM или вручную.
    • Шаг 2. В файле миграции используйте queryRunnerдля выполнения SQL-запросов для переименования поля/столбца в таблице базы данных.
    • Шаг 3. Примените миграцию, чтобы обновить схему базы данных.

    Пример:

    import {MigrationInterface, QueryRunner} from "typeorm";
    export class RenameFieldExample1630000000000 implements MigrationInterface {
       async up(queryRunner: QueryRunner): Promise<void> {
           await queryRunner.query("ALTER TABLE table_name RENAME COLUMN old_field TO new_field");
       }
       async down(queryRunner: QueryRunner): Promise<void> {
           await queryRunner.query("ALTER TABLE table_name RENAME COLUMN new_field TO old_field");
       }
    }
  2. Переименование столбца сущности TypeORM:

    • Используйте декоратор @Columnсо свойством name, чтобы указать новое имя для поля/столбца в определении сущности.
    • Создайте новую миграцию с помощью интерфейса командной строки TypeORM или вручную, и TypeORM автоматически сгенерирует запросы SQL для переименования поля в таблице базы данных.

    Пример:

    import {Entity, Column, PrimaryGeneratedColumn} from "typeorm";
    @Entity()
    export class ExampleEntity {
       @PrimaryGeneratedColumn()
       id: number;
       @Column({ name: "new_field_name" })
       oldFieldName: string;
    }
  3. Sequelize Migration:
    Если вы используете Sequelize в качестве ORM, вы можете использовать Sequelize миграции для изменения имен полей.

    • Создайте новый файл миграции с помощью Sequelize CLI или вручную.
    • Используйте метод queryInterface.renameColumn(), чтобы переименовать поле/столбец в таблице базы данных.

    Пример:

    'use strict';
    module.exports = {
       up: async (queryInterface, Sequelize) => {
           await queryInterface.renameColumn('table_name', 'old_field_name', 'new_field_name');
       },
       down: async (queryInterface, Sequelize) => {
           await queryInterface.renameColumn('table_name', 'new_field_name', 'old_field_name');
       }
    };

Изменить имена полей в TypeORM можно различными методами, включая ручную миграцию базы данных, переименование столбца сущности TypeORM и миграцию Sequelize. Каждый метод обеспечивает гибкость в зависимости от требований вашего проекта. Следуя предоставленным примерам кода, вы можете легко реализовать изменения имен полей в проектах TypeORM или Sequelize, гарантируя плавный переход при сохранении целостности данных.