Эффективное удаление данных с помощью TypeORM: подробное руководство

Удаление данных — важнейший аспект любого приложения, работающего с постоянными данными. TypeORM, популярная библиотека объектно-реляционного сопоставления (ORM) для TypeScript и Node.js, предоставляет множество методов для эффективного удаления данных из базы данных. В этой статье мы рассмотрим несколько методов, предлагаемых TypeORM для удаления данных, а также примеры кода.

  1. Удаление объекта по идентификатору:
    Самый простой способ удалить запись в TypeORM — использовать метод delete. Вот пример:
import { getRepository } from 'typeorm';
import { User } from '../entities/User';
const userRepository = getRepository(User);
async function deleteUser(userId: number): Promise<void> {
  await userRepository.delete(userId);
}
  1. Удаление нескольких объектов.
    Чтобы удалить несколько объектов, соответствующих определенным условиям, вы можете использовать метод deleteвместе с построителем запросов. Вот пример:
import { getRepository } from 'typeorm';
import { User } from '../entities/User';
const userRepository = getRepository(User);
async function deleteInactiveUsers(): Promise<void> {
  await userRepository
    .createQueryBuilder()
    .delete()
    .where('isActive = :isActive', { isActive: false })
    .execute();
}
  1. Мягкое удаление с помощью SoftDeleteColumn:
    TypeORM поддерживает функцию обратимого удаления, при которой объекты не удаляются окончательно из базы данных, а помечаются как удаленные. Этого можно добиться с помощью декоратора @DeleteDateColumnв вашем классе сущности. Вот пример:
import { Entity, PrimaryGeneratedColumn, Column, DeleteDateColumn } from 'typeorm';
@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;
  @Column()
  name: string;
  @DeleteDateColumn({ name: 'deleted_at' })
  deletedAt: Date;
}
  1. Каскадное удаление:
    TypeORM допускает каскадное удаление, при котором связанные объекты автоматически удаляются при удалении родительского объекта. Этого можно достичь, определив соответствующие отношения в классах сущностей.
import { Entity, PrimaryGeneratedColumn, Column, OneToMany, DeleteCascade } from 'typeorm';
import { Comment } from './Comment';
@Entity()
export class Post {
  @PrimaryGeneratedColumn()
  id: number;
  @Column()
  title: string;
  @OneToMany(() => Comment, (comment) => comment.post, { cascade: true })
  @DeleteCascade()
  comments: Comment[];
}

В этой статье мы рассмотрели различные методы, предоставляемые TypeORM для эффективного удаления данных. Мы рассмотрели удаление объектов по идентификатору, удаление нескольких объектов на основе условий, функцию обратимого удаления и каскадное удаление. Используя эти методы, вы можете эффективно управлять удалением данных в приложениях на базе TypeORM.

Не забудьте адаптировать примеры кода к вашему конкретному варианту использования и схеме базы данных. Приятного кодирования!