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?
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é