本指南详细介绍如何使用 NestJS 中的 TypeORM 进行数据库访问。TypeORM 是一个强大的对象关系映射 (ORM) 库,它为 SQL 数据库和 MongoDB 提供了数据库抽象。本页面重点介绍 TypeORM 与 NestJS 应用程序的集成。有关 Mongoose 集成的信息,请参阅 Mongoose 集成。有关 Sequelize 集成,请参阅 Sequelize 集成。
@nestjs/typeorm 包提供了 TypeORM 与 NestJS 之间的紧密集成,使您能够轻松地将仓库注入到服务中,并利用 TypeORM 的强大功能来访问数据库。
来源:sample/05-sql-typeorm/package.json, sample/13-mongo-typeorm/package.json
要开始将 TypeORM 与 NestJS 结合使用,您需要安装必要的依赖项。
npm install --save @nestjs/typeorm typeorm mysql2
mysql2 包可以替换为您选择的数据库驱动程序(例如,PostgreSQL 使用 pg,SQLite 使用 sqlite3)。
来源:sample/05-sql-typeorm/package.json
npm install --save @nestjs/typeorm typeorm mongodb
来源:sample/13-mongo-typeorm/package.json
在您的应用程序中,您需要导入 TypeORM 模块并对其进行配置以连接到数据库。
来源:sample/05-sql-typeorm/package.json
MongoDB 的设置与 SQL 数据库类似,但配置略有不同。
要将 TypeORM 注册到您的应用程序中,您需要将 TypeOrmModule 导入到您的根模块中(通常是 app.module.ts)。
来源:sample/05-sql-typeorm/docker-compose.yml
对于 MongoDB 集成
来源:sample/13-mongo-typeorm/package.json, integration/docker-compose.yml
实体是 TypeORM 的基石,代表数据库表或集合。
定义好实体后,使用功能模块中的 forFeature() 方法将它们注册到 TypeORM。
然后在您的服务中注入仓库
NestJS 支持通过 TypeORM 进行多个数据库连接。当您的应用程序需要连接到不同的数据库时,这非常有用。
要在功能模块中使用特定连接
来源:sample/05-sql-typeorm/docker-compose.yml
TypeORM v0.3 引入了数据源的概念(以前称为连接)。您可以单独创建数据源并与 NestJS 一起使用。
适用于连接详细信息在运行时才能确定的环境
尽管 TypeORM v0.3.x 已弃用自定义仓库模式,但您仍然可以实现类似的功能。
在测试使用 TypeORM 仓库的组件时,您可以创建模拟仓库。
来源:sample/05-sql-typeorm/test/jest-e2e.json
TypeORM 提供了数据库模式更改的迁移功能。
在 NestJS 中有多种方式可以将实体注册到 TypeORM。
NestJS 中的 TypeORM 集成与其他框架功能无缝协作。
来源:sample/05-sql-typeorm/package.json, sample/13-mongo-typeorm/package.json
NestJS 中的 TypeORM 集成提供了一种强大而灵活的数据库工作方式。@nestjs/typeorm 包抽象了许多数据库操作的复杂性,使开发人员能够专注于应用程序逻辑,同时利用 TypeORM 的强大功能。
对于 SQL 数据库,TypeORM 支持多种平台,包括 MySQL、PostgreSQL、MariaDB、SQLite、MS SQL Server、Oracle 和 SAP Hana。对于文档数据库,它支持 MongoDB。
通过遵循本指南中概述的模式,您可以有效地将数据库功能集成到您的 NestJS 应用程序中,同时保持代码的整洁和可维护性。