返回
在 Nest.js 中使用 TypeORM 连接 MySQL 数据库
前端
2023-12-19 22:39:27
在现代Web开发中,数据库是不可或缺的一部分,它为应用程序提供了持久化存储数据的能力。在Nest.js中,我们可以使用TypeORM作为对象关系映射器(ORM)来连接和操作数据库。TypeORM是一个功能强大的ORM,它支持多种数据库,包括MySQL、PostgreSQL、SQLite等。
定义实体
首先,我们需要定义实体来表示数据库中的表。实体是TypeScript类,它包含了表的字段和方法。例如,我们可以定义一个名为“User”的实体,如下所示:
import {Entity, Column, PrimaryGeneratedColumn} from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
连接数据库
接下来,我们需要连接到数据库。在Nest.js中,我们可以通过在模块中导入TypeORMModule并配置数据库连接选项来实现。例如,对于MySQL数据库,我们可以使用以下配置:
import {Module} from "@nestjs/common";
import {TypeOrmModule} from "@nestjs/typeorm";
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'nest_db',
entities: [User],
synchronize: true,
}),
],
})
export class AppModule {}
使用存储库进行 CRUD 操作
TypeORM提供了存储库来进行CRUD(创建、读取、更新、删除)操作。存储库是实体的抽象,它提供了对数据库的访问。我们可以通过在服务中注入存储库来使用它。例如,我们可以使用以下代码在UserService中创建用户:
import {Injectable} from "@nestjs/common";
import {InjectRepository} from "@nestjs/typeorm";
import {UserRepository} from "./user.repository";
import {User} from "./user.entity";
@Injectable()
export class UserService {
constructor(
@InjectRepository(UserRepository)
private userRepository: UserRepository,
) {}
async createUser(name: string, email: string): Promise<User> {
const user = new User();
user.name = name;
user.email = email;
return await this.userRepository.save(user);
}
}
总结
在本文中,我们介绍了如何在Nest.js中使用TypeORM连接和使用MySQL数据库,包括如何定义实体、连接数据库和使用存储库进行CRUD操作。希望本文对您有所帮助。