移除和删除有什么区别?
What’s the difference between remove and delete?
比如我有一个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();
Which means you should use remove
if it contains an array of Entities.
While you should use delete
if you know the condition.
此外,@James stated in Entity Listener
例如 @BeforeRemove
和 @AfterRemove
侦听器仅在使用 repository.remove
删除实体时触发。
类似地,@BeforeInsert
、@AfterInsert
、@BeforeUpdate
、@AfterUpdate
仅在实体为inserted/updated时使用repository.save
触发。
比如我有一个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();
Which means you should use
remove
if it contains an array of Entities.While you should use
delete
if you know the condition.
此外,@James stated in Entity Listener
例如 @BeforeRemove
和 @AfterRemove
侦听器仅在使用 repository.remove
删除实体时触发。
类似地,@BeforeInsert
、@AfterInsert
、@BeforeUpdate
、@AfterUpdate
仅在实体为inserted/updated时使用repository.save
触发。