Удаление данных — важнейший аспект любого приложения, работающего с постоянными данными. TypeORM, популярная библиотека объектно-реляционного сопоставления (ORM) для TypeScript и Node.js, предоставляет множество методов для эффективного удаления данных из базы данных. В этой статье мы рассмотрим несколько методов, предлагаемых TypeORM для удаления данных, а также примеры кода.
- Удаление объекта по идентификатору:
Самый простой способ удалить запись в 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);
}
- Удаление нескольких объектов.
Чтобы удалить несколько объектов, соответствующих определенным условиям, вы можете использовать метод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();
}
- Мягкое удаление с помощью 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;
}
- Каскадное удаление:
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.
Не забудьте адаптировать примеры кода к вашему конкретному варианту использования и схеме базы данных. Приятного кодирования!