- 安装必要的依赖:使用 npm 或 yarn 安装 @nestjs/typeorm 和 typeorm 等依赖。
pnpm i @nestjs/typeorm typeorm mysql2
- 配置 TypeORM:在 app.module.ts 中配置 TypeORM,指定数据库的连接信息、实体类和同步选项。
import { TypeOrmModule } from '@nestjs/typeorm';
TypeOrmModule.forRoot({
type: 'mysql', //数据库类型
username: 'root', //账号
password: 'root', //密码
host: 'localhost', //host
port: 3306, //
database: 'nestdemo1', //库名
entities: [__dirname + '/**/*.entity{.ts,.js}'], //实体文件
synchronize: true, //synchronize字段代表是否自动将实体类同步到数据库
retryDelay: 500, //重试连接数据库间隔
retryAttempts: 10, //重试连接数据库的次数
autoLoadEntities: true, //如果为true,将自动加载实体 forFeature()方法注册的每个实体都将自动添加到配置对象的实体数组中
}),
- 创建实体类:定义实体类,使用 TypeORM 的装饰器来标记实体类和属性。
import { InjectRepository } from '@nestjs/typeorm';
import { Like, Repository } from 'typeorm';
import { User } from './entities/user.entity';
// user.entity.ts
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
} from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@CreateDateColumn()
createtime: Date;
@Column()
desc: string;
}
- 创建 Service:使用 Nest 的 Injectable 装饰器来创建 Service 类,使用 InjectRepository 装饰器将 Repository 注入到 Service 中,实现对实体的增删改查操作。
// 在服务的构造函数中引入实体类
constructor(
@InjectRepository(User) private readonly user: Repository<User>,
) {}
//查询全部 分页/模糊查询
async findAll(query: { keyWord: string; page: number; pageSize: number }) {
const res = await this.user.find({
// Like 方法进行模糊匹配
where: {
name: Like(`%${query.keyWord}%`),
},
// 降序排列
order: {
id: 'DESC',
},
// skip 表示跳过前面的数据
skip: (query.page - 1) * query.pageSize,
// 需要查询的数据条数
take: query.pageSize,
});
const total = await this.user.count({
// Like 方法进行模糊匹配
where: {
name: Like(`%${query.keyWord}%`),
},
});
return { data: res, total };
}
//增加
create(createUserDto: CreateUserDto) {
const data = new User();
data.name = createUserDto.name;
data.desc = createUserDto.desc;
return this.user.save(data);
}
// 更新
update(id: number, updateUserDto: UpdateUserDto) {
return this.user.update(id, updateUserDto)
}
// 删除
remove(id: number) {
return this.user.delete(id)
}
-
创建 Controller:使用 Nest 的 Controller 装饰器来创建 Controller 类,定义路由和方法,调用 Service 中的方法来实现对实体的增删改查操作
-
测试 API:使用 Postman 或其他 HTTP 客户端来测试 API,确保实体的增删改查操作正常。