返回

初探 Nestjs,解锁 TypeORM 连接 MySQL 的奥秘

前端

在上一篇文章中,我们搭建了 Nestjs 项目的基础,并添加了 users 模块的增删改查接口。现在,让我们踏上新的征程,连接 MySQL 数据库,创建 users 表,并修改 users.service.ts 代码以实现数据操作。

为 Nestjs 引入 TypeORM

TypeORM 是一个强大的对象关系映射 (ORM) 工具,它可以帮助我们轻松地将 JavaScript 对象映射到关系型数据库表中。要将 TypeORM 集成到我们的 Nestjs 项目中,请遵循以下步骤:

  1. 安装 TypeORM:
npm install --save typeorm
  1. 在 src/database/database.module.ts 文件中导入 TypeORMModule 并将其添加到 imports 数组中:
import { TypeORMModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeORMModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'password',
      database: 'nestjs_db',
      entities: [User],
    }),
  ],
})
export class DatabaseModule {}

别忘了将 User 实体添加到 entities 数组中,这样 TypeORM 就会知道要创建 users 表。

创建 users 表

现在,让我们创建 users 表。在 src/entities/user.entity.ts 文件中,定义 User 实体:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;
}

修改 users.service.ts

现在,是时候修改 users.service.ts 文件以连接数据库并执行 CRUD 操作了:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {}

  async create(user: User): Promise<User> {
    return await this.usersRepository.save(user);
  }

  async findAll(): Promise<User[]> {
    return await this.usersRepository.find();
  }

  async findOne(id: number): Promise<User> {
    return await this.usersRepository.findOne(id);
  }

  async update(id: number, user: User): Promise<User> {
    await this.usersRepository.update(id, user);
    return await this.usersRepository.findOne(id);
  }

  async delete(id: number): Promise<void> {
    await this.usersRepository.delete(id);
  }
}

使用新的功能

现在,您可以使用 UserService 在 users 表中创建、读取、更新和删除数据。只需注入 UserService 并调用相应的方法即可。

结论

现在,您已经了解如何使用 TypeORM 连接 Nestjs 到 MySQL 并执行 CRUD 操作。通过结合 Nestjs 和 TypeORM 的强大功能,您可以轻松构建强大的 web 应用程序。