前言:本文主要介绍 npm 包 @brunnerlivio/typeorm 的使用,针对初学者和有一定经验的前端开发人员,详细介绍了 typeorm 的基本特性、使用教程和示例代码。
什么是 TypeORM?
TypeORM 是一个 TypeScript 和 JavaScript 的 ORM 框架,用于 Node.js 和浏览器。它集成了许多数据库,MySQL、MariaDB、PostgreSQL、CockroachDB、SQLite 等,是一个强大的数据库管理工具。
TypeORM 具有以下主要特点:
- 支持多种数据库:MySQL、MariaDB、PostgreSQL、SQLite、MS SQL Server、Oracle、SAP Hana 等。
- 支持 TypeScript 和 JavaScript。
- 支持对象关系映射(ORM)和数据访问层(Data Mapper)模式。
- 支持实体(Entity)、仓库(Repository)、查询生成器(Query Builder)等常见功能。
- 支持事务(Transaction)和乐观锁(Optimistic Lock)等高级特性。
安装 TypeORM
TypeORM 是一个 npm 包,可以通过以下方式进行安装:
npm i typeorm
使用 TypeORM
创建实体(Entity)
实体是数据库中的表格或实体,使用实体可以实现对数据库表的 CRUD 操作。使用 TypeORM 创建一个示例实体:
-- -------------------- ---- ------- ------ -------- ----------------------- ------- ---- ---------- --------- ------ ----- ---- - ------------------------- --- ------- --------- ---------- ------- --------- --------- ------- --------- ---- ------- -
上述示例代码定义了一个名为 User 的实体,包含主键 id 和三个属性:firstName、lastName 和 age。
创建仓库(Repository)
使用 Entity 创建了实体类之后,还需要为其创建一个 Repository,该仓库将实体与数据库进行映射,以便进行 CRUD 操作。使用 TypeORM 创建一个示例仓库:
import { EntityRepository, Repository } from "typeorm"; import { User } from "../entities/User"; @EntityRepository(User) export class UserRepository extends Repository<User> { }
上述示例代码定义了一个名为 UserRepository 的仓库类,该仓库使用实体 User 进行操作。
连接数据库
TypeORM 支持多种数据库,不同的数据库的连接正如不同的代码框架不同的开关连接一样,连接功能本身并不由 TypeORM 负责,它只是提供了许多可用的库,方便我们与数据库进行连接。
以下代码为 TypeORM 连接 Postgres 数据库:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------------------ ----- ----------- ----- ------------ ----- ----- --------- ------- --------- ------- --------- ------ ------------------ -- - -- --------- -------------- -- --------------------
查询数据
TypeORM 提供了多种方法用于查询数据库中的数据,以下代码通过 UserRepository 对数据库进行查询:
import { getCustomRepository } from "typeorm"; import { UserRepository } from "./repositories/UserRepository"; async function getUsers() { const userRepository = getCustomRepository(UserRepository); const users = await userRepository.find(); console.log(users); }
上述代码通过 UserRepository 查询了 User 实体的所有数据,使用 find() 方法返回一个 Promise,Promise 成功时将返回匹配的实体数组。
插入数据
TypeORM 提供了多种方法用于向数据库中插入数据,以下代码通过 UserRepository 向数据库中插入一个 User 实体:
-- -------------------- ---- ------- ------ - ------------------- - ---- ---------- ------ - -------------- - ---- -------------------------------- ------ - ---- - ---- ------------------ ----- -------- ------------- ----- - ----- -------------- - ------------------------------------ ----- -------------------------- ----------------- ----------------- ---------------- --------- -
上述代码使用 save() 方法将一个 User 实体保存到数据库。
更新数据
TypeORM 提供了多种方法用于更新数据库中的数据,以下代码通过 UserRepository 更新一个 User 实体:
-- -------------------- ---- ------- ------ - ------------------- - ---- ---------- ------ - -------------- - ---- -------------------------------- ------ - ---- - ---- ------------------ ----- -------- ---------------- ----- - ----- -------------- - ------------------------------------ ----- ------------------------------ - ---------- --------------- --------- -------------- ---- -------- --- ----------------- ----------------- ---------------- ----------- -
上述代码使用 update() 方法将一个 User 实体更新到数据库。
删除数据
TypeORM 提供了多种方法用于从数据库中删除数据,以下代码通过 UserRepository 删除一个 User 实体:
-- -------------------- ---- ------- ------ - ------------------- - ---- ---------- ------ - -------------- - ---- -------------------------------- ------ - ---- - ---- ------------------ ----- -------- ---------------- ----- - ----- -------------- - ------------------------------------ ----- ------------------------------- ----------------- ----------------- ---------------- ----------- -
上述代码使用 delete() 方法将一个 User 实体从数据库中删除。
总结
TypeORM 提供了强大的 ORM 功能,支持多种数据库和多种查询方式,使用起来非常灵活方便。本文介绍了 TypeORM 的基本特性、使用教程和示例代码,希望对读者在前端开发中使用 TypeORM 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/brunnerlivio-typeorm