介绍
TypeORM 是一个强大的 ORM(对象关系映射)框架,它支持多种数据库,如 MySQL、PostgreSQL、SQLite、Oracle 等。使用 TypeORM 可以让我们更方便地操作数据库,并且不用去手动写 SQL 语句,从而提高开发效率。
在 TypeScript 中使用 TypeORM 可以获得类型检查的优势,让我们更容易地发现代码错误,并且在代码复杂度增加时也更容易维护。
本文将介绍如何在 TypeScript 项目中使用 TypeORM,并且提供一些最佳实践和示例代码。
安装
要在 TypeScript 项目中使用 TypeORM,需要先安装这两个包:
npm install typeorm reflect-metadata
其中 reflect-metadata
是必需的,因为 TypeORM 使用装饰器来定义实体和字段映射关系,而这些装饰器需要 reflect-metadata
支持。
配置
TypeORM 的配置文件最常见的是 ormconfig.js
,但是在 TypeScript 项目中,我们可以使用 ormconfig.ts
来获得类型检查的好处。
以下是一个示例配置文件:
-- -------------------- ---- ------- ------ - ----------------- - ---- ---------- ----- ------- ----------------- - - ----- ----------- -- ----- ----- ------------ -- ----- ----- ----- -- ----- --------- ----------- -- ------ --------- ----------- -- ----- --------- ------- -- ---- ------------ ----- -- --------- -------- ------ -- --- --- -- --------- --------------------------- -- --------- ---- -- ----------- ----------------------------- -- ------------ ---- -- ------------ ------------------------------ -- ------------ ---- -- ---- - ------------ ----------------- -- --------------------- -------------- ------------------- -- ------------------------ --------------- -------------------- -- ------------------------ -- -- ------ - -------
定义实体
在 TypeORM 中,一个实体代表了一个数据表,实体的属性代表了数据表中的字段。
以下是一个示例实体定义:
-- -------------------- ---- ------- ------ - ------- ------- ---------------------- - ---- ---------- --------- ----- ------- -- -- ------------- ----- ------ ----- ---- - ------------------------- --- ------- --------- ----- ------- --------- ------ ------- --------- --------- ------- --------- ----- ------------ -- ---------- ----- --------- ----- ------------ -- ---------- ----- -
该实体定义了一个名为 users
的数据表,并且有五个字段:id
、name
、email
、password
、createdAt
和 updatedAt
。id
字段是主键,createdAt
和 updatedAt
字段使用了 @Column
装饰器中的 name
属性来指定了字段名。
定义关系
在 TypeORM 中,实体之间可以有关系,比如一个用户有多篇文章。以下是一个示例关系定义:
-- -------------------- ---- ------- ------ - ------- ------- ----------------------- --------- - ---- ---------- ------ - ---- - ---- ---------------- --------- ----- ------- -- ------ ----- ---- - -- --- ------------- -- ----- ------ -- ------------ ------ ------- -
这里定义了一个 User
实体和 Post
实体之间的一对多关系,意思是一个用户可以有多篇文章,而一篇文章只能有一个作者。
操作数据
在使用 TypeORM 操作数据之前,需要先创建连接,然后通过连接获取实体的仓库,即 Repository
。
以下是一个简单的操作数据的示例:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------- ------ - ---- - ---- ------------------------- ------------------ ----------- ------------ -- - ----- -------------- - ------------------------------- ----- ------- - --- ------- ------------ - -------- ------------- - -------------------- ---------------- - ----------- ----------------- - --- ------- ----------------- - --- ------- ----- ----------------------------- ---------------- --- ---- --- ---- ------- ---- -- ---------------- -- -------------- -- --------------------
这里创建了一个名为 Alice
的用户,并将其保存到数据库中。在 save
方法调用完成后,newUser
对象的 id
属性就会被填充上插入数据库后的值,可以在控制台输出。
最佳实践
- 在
ormconfig.ts
中使用类型声明来获得类型检查的好处。 - 使用实体定义数据表的结构,使用字段类型、长度、关系等来约束数据合法性。
- 尽可能使用
async/await
来进行操作,避免回调地狱。 - 在操作对象的同时,避免对原始对象造成影响,比如对数组进行修改时不要直接修改原数组,而应该创建并返回一个新数组。
- 将所有的 DB 操作放在单独的文件夹中,按照功能或模块进行划分。
- 使用迁移来管理数据库结构的变化,避免手动操作数据库造成错误。
结论
本文介绍了在 TypeScript 中使用 TypeORM 的教程及最佳实践和示例代码。通过使用 TypeORM,我们可以方便地操作数据库,更容易发现代码错误,在开发过程中提高代码质量和效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66fbd3df4471362601647b86