一文带你搞懂nestjs中的remove和inster

一文带你搞懂nestjs中的remove()&inster()&save()&create()

建议您在开发中使用 remove和inster来操作数据库!

remove()&delete()区别

当我们在删除数据的时候最好使用remove(),remove()可以一次性删除单个或多个实例,注意删除的是实例不是数据,并且remove()可以触发BeforeRemove和AfterRemove钩子;

当我们触发钩子函数的时候 我们可以在此之前把用户要删除的数据放到数据库中的另外一个表中去存储。

示例:

await repository.remove(user)
await repository.remove([user1,user2,user3])

钩子函数示例:

这些钩子函数是写在实体类中的

//删除函数
async remove(id:number) {
// return this.userRepository.delete(id);
const user =await this.findOne(id);
return this.userRepository.remove(user);
}

@AfterInsert()
afterInsert(){
console.log('afterInsert',this.id,this.username);
}

@AfterRemove()
afterRemove(){
console.log('afterRemove');
}

delete可以一次性删除单个或者多个id实例,或者给定条件;

delete方法是硬删除,直接把数据从数据库中抹除了,不建议

await repository.delete(1)
await repository.delete([1,2,3])
await repository.delete({username: toimc })

save()&create()&insert()

在TypeORM中,save()create()insert()是用来在数据库中创建新记录的方法,它们之间有一些区别:

  1. 在TypeORM中,create()方法用于创建一个新的实体实例,但不会将其保存到数据库中。这个方法的主要作用是初始化实体对象的属性,并为之后的保存操作做准备。通过create()方法创建的实体对象可以在之后通过save()insert()方法保存到数据库中,或者进行其他操作。

    例如,您可以使用create()方法初始化一个实体对象,然后修改一些属性的值,最后再通过save()方法将其保存到数据库中:

    const newUser = userRepository.create({
      name: "John",
      age: 30,
      email: "john@example.com"
    });
    
    // 修改属性
    newUser.age = 31;
    
    // 保存到数据库
    await userRepository.save(newUser);
    

    这样,create()方法可以帮助您方便地初始化一个实体对象,并对其属性进行设置,为之后的操作做准备。

    因此,create()方法的作用在于创建一个新的实体实例,但不会触发数据库操作。相反,它为之后的保存操作提供了方便的实体对象。

  2. save(): save()方法用于将一个已经存在的实体对象保存到数据库中,或者更新数据库中的已有记录。例如:

await userRepository.save(newUser);

这段代码将之前创建的newUser实体保存到数据库中。

  1. insert(): insert()方法用于将一个新的记录直接插入到数据库中,而不需要先创建实体对象。例如:
await userRepository.insert({
  name: "Alice",
  age: 25,
  email: "alice@example.com"
});

这段代码将一个新的记录直接插入到数据库中,而不需要先创建一个实体对象。

因此,这三种方法在TypeORM中用于创建新记录,但它们的具体用途略有不同。create()用于创建实体对象而不保存到数据库,save()用于保存已存在的实体对象,insert()用于直接将新记录插入到数据库中。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值