🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

NNC D7:把客户端数据送进 Nest.js 应用的数据库

D7 的训练简单又让人兴奋,我们终端可以把客户端数据送进应用的数据库里了,还要了解一下如何提取、更新还有删除数据。TypeOrm 里面提供了一种叫 Repository 的东西,使用它可以处理数据库里的数据。

先了解一下基本的流程,首先要在模块里说明一下要用的实体的类型,然后在想要使用 Repository 的地方,要把它作为依赖注入进来,比如一般我们会在服务(Service)里使用 Repository 去处理数据,所以在定义服务类的时候,要把在这个服务里需要的 Repository 注入到这个类里面。这样就可以在这个服务里使用 Repository 上提供的方法去处理数据了,比如存储、更新、提取或者删除数据。

在模块设置要使用的实体

import { TypeOrmModule } from '@nestjs/typeorm';
import { Post } from './post.entity';

@Module({
  imports: [
    TypeOrmModule.forFeature([Post])
  ]
})
export class PostModule {}

上面是我们自己定义的 Post 模块,在这个模块里要使用 Post 实体,所以需要在这个模块的 imports 里面,导入 TypeOrmModule ,用一下 forFeature 方法,把要在这个模块里使用的实体交给这个方法就可以了。

在服务注入使用 Repository

import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Post } from './post.entity';

export class PostService {
  constructor(
    @InjectRepository(Post)
    private readonly postRepository: Repository<Post>
  ) { }
}

在类里注入依赖可以在类里添加一个构造方法,在这个构造方法里注入需要的东西,上面就注入了一个 Repository ,类型是 Post,所以注入进来的 Repository 就是一个 Post 实体的 Repository 了。这样我们就可以在这个服务类的方法里使用它上面提供的方法去处理数据。

async store(data: PostDto) {
    const entity = await this.postRepository.create(data);
    await this.postRepository.save(entity);
    return entity;
  }

上面是这个服务类里的一个方法,这个方法里面,先用了 Repository 上的 create 方法,创建了一个 Post 实体,然后又用 Repository 上的 save 方法,把这个创建的实体存储在数据库里面。方法最终返回的东西就是新创建的这个 Post 实体数据。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点