web-dev-qa-db-fra.com

Quelle est la différence entre supprimer et supprimer?

Par exemple, j'ai une entité TypeORM Profile:

@Entity()
class Profile {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    gender: string;

    @Column()
    photo: string;

    @OneToOne(type => User, { cascade: true })
    @JoinColumn()
    user: User;
}

Et je ne sais pas lequel utiliser pour supprimer un profil utilisateur?

Profile.remove(profile)
Profile.delete(profile)

Quelle est la différence entre les méthodes remove et delete dans TypeORM?

8
Yegor Zaremba

De Repo :

  • remove - Supprime une entité ou un tableau d'entités donné. Il supprime toutes les entités données en une seule transaction (dans le cas d'une entité, le gestionnaire n'est pas transactionnel).

Exemple:

await repository.remove(user);
await repository.remove([
    category1,
    category2,
    category3
]);
  • delete - Supprime des entités par id d'entité, ids ou conditions données:

Exemple:

await repository.delete(1);
await repository.delete([1, 2, 3]);
await repository.delete({ firstName: "Timber" });

Comme indiqué dans l'exemple ici :

import {getConnection} from "typeorm";

await getConnection()
    .createQueryBuilder()
    .delete()
    .from(User)
    .where("id = :id", { id: 1 })
    .execute();

Ce qui signifie que vous devez utiliser remove s'il contient un tableau d'entités.

Vous devez utiliser delete si vous connaissez la condition.


De plus, comme @ James indiqué dans commentEntity Listener tel que @BeforeRemove et @AfterRemove les écouteurs ne se déclenchent que lorsque l'entité est supprimée à l'aide de repository.remove.

De même, @BeforeInsert, @AfterInsert, @BeforeUpdate, @AfterUpdate déclenché uniquement lorsque l'entité est insérée/mise à jour à l'aide de repository.save.

Source: Écouteurs et abonnés d'entité

19
Mukyuu