TypeScript 中使用 TypeORM 的教程及最佳实践

阅读时长 6 分钟读完

介绍

TypeORM 是一个强大的 ORM(对象关系映射)框架,它支持多种数据库,如 MySQL、PostgreSQL、SQLite、Oracle 等。使用 TypeORM 可以让我们更方便地操作数据库,并且不用去手动写 SQL 语句,从而提高开发效率。

在 TypeScript 中使用 TypeORM 可以获得类型检查的优势,让我们更容易地发现代码错误,并且在代码复杂度增加时也更容易维护。

本文将介绍如何在 TypeScript 项目中使用 TypeORM,并且提供一些最佳实践和示例代码。

安装

要在 TypeScript 项目中使用 TypeORM,需要先安装这两个包:

其中 reflect-metadata 是必需的,因为 TypeORM 使用装饰器来定义实体和字段映射关系,而这些装饰器需要 reflect-metadata 支持。

配置

TypeORM 的配置文件最常见的是 ormconfig.js,但是在 TypeScript 项目中,我们可以使用 ormconfig.ts 来获得类型检查的好处。

以下是一个示例配置文件:

-- -------------------- ---- -------
------ - ----------------- - ---- ----------

----- ------- ----------------- - -
  ----- ----------- -- -----
  ----- ------------ -- -----
  ----- ----- -- -----
  --------- ----------- -- ------
  --------- ----------- -- -----
  --------- ------- -- ----
  ------------ ----- -- ---------
  -------- ------ -- --- --- --
  --------- --------------------------- -- --------- ---- --
  ----------- ----------------------------- -- ------------ ---- --
  ------------ ------------------------------ -- ------------ ---- --
  ---- -
    ------------ ----------------- -- ---------------------
    -------------- ------------------- -- ------------------------
    --------------- -------------------- -- ------------------------
  --
--

------ - -------

定义实体

在 TypeORM 中,一个实体代表了一个数据表,实体的属性代表了数据表中的字段。

以下是一个示例实体定义:

-- -------------------- ---- -------
------ - ------- ------- ---------------------- - ---- ----------

--------- ----- ------- -- -- ------------- -----
------ ----- ---- -
  -------------------------
  --- -------

  ---------
  ----- -------

  ---------
  ------ -------

  ---------
  --------- -------

  --------- ----- ------------ --
  ---------- -----

  --------- ----- ------------ --
  ---------- -----
-

该实体定义了一个名为 users 的数据表,并且有五个字段:idnameemailpasswordcreatedAtupdatedAtid 字段是主键,createdAtupdatedAt 字段使用了 @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

纠错
反馈