返回
初探 Nestjs,解锁 TypeORM 连接 MySQL 的奥秘
前端
2023-12-28 01:03:40
在上一篇文章中,我们搭建了 Nestjs 项目的基础,并添加了 users 模块的增删改查接口。现在,让我们踏上新的征程,连接 MySQL 数据库,创建 users 表,并修改 users.service.ts 代码以实现数据操作。
为 Nestjs 引入 TypeORM
TypeORM 是一个强大的对象关系映射 (ORM) 工具,它可以帮助我们轻松地将 JavaScript 对象映射到关系型数据库表中。要将 TypeORM 集成到我们的 Nestjs 项目中,请遵循以下步骤:
- 安装 TypeORM:
npm install --save typeorm
- 在 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 应用程序。