たとえば、TypeORMエンティティProfile
があります。
@Entity()
class Profile {
@PrimaryGeneratedColumn()
id: number;
@Column()
gender: string;
@Column()
photo: string;
@OneToOne(type => User, { cascade: true })
@JoinColumn()
user: User;
}
また、ユーザープロファイルの削除にどちらを使用すればよいかわかりません。
Profile.remove(profile)
Profile.delete(profile)
TypeORMのremove
メソッドとdelete
メソッドの違いは何ですか?
Repo から:
remove
-指定されたエンティティまたはエンティティの配列を削除します。単一のトランザクションで指定されたすべてのエンティティを削除します(エンティティの場合、マネージャーはトランザクションではありません)。例:
await repository.remove(user);
await repository.remove([
category1,
category2,
category3
]);
delete
-エンティティID、ID、または指定された条件でエンティティを削除します:例:
await repository.delete(1);
await repository.delete([1, 2, 3]);
await repository.delete({ firstName: "Timber" });
例で述べたように here :
import {getConnection} from "typeorm";
await getConnection()
.createQueryBuilder()
.delete()
.from(User)
.where("id = :id", { id: 1 })
.execute();
つまり、エンティティの配列が含まれている場合は、
remove
を使用する必要があります。条件がわかっている場合は
delete
を使用する必要があります。
さらに、@ JamescommentEntity Listener
などのように@BeforeRemove
および@AfterRemove
リスナーは、repository.remove
を使用してエンティティが削除されたときにのみトリガーされます。
同様に、@BeforeInsert
、@AfterInsert
、@BeforeUpdate
、@AfterUpdate
は、repository.save
を使用してエンティティが挿入/更新されたときにのみトリガーされます。
ソース: エンティティリスナーとサブスクライバー