Sequelize 加强版:TypeORM

引言

Sequelize 是一个非常流行的 Node.js ORM 库,它允许开发者使用 JavaScript 对数据库进行操作,支持多种数据库,如 MySQL、PostgreSQL、SQLite、MSSQL 等。然而,Sequelize 也存在一些不足之处,如缺少类型检查、复杂的查询语句等。

TypeORM 是一个新兴的 Node.js ORM 库,它基于 TypeScript,提供了更加强大的类型检查和更加简洁的查询语句。本文将介绍 TypeORM 的使用方法,以及与 Sequelize 的对比。

安装

使用 npm 安装 TypeORM:

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

其中,reflect-metadata 是必须的依赖项。

连接数据库

首先,需要在项目中创建一个 ormconfig.json 文件,用于配置数据库连接信息。例如,连接 MySQL 数据库:

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

其中,entities 属性指定了实体类所在的目录,这里假设实体类放在 src/entity 目录下。

然后,在应用程序中创建一个连接:

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

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

定义实体类

TypeORM 中的实体类与 Sequelize 中的模型类类似,用于描述数据表的结构。例如,定义一个 User 实体类:

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

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

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

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

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

其中,@Entity() 装饰器表示该类为实体类,@PrimaryGeneratedColumn() 装饰器表示该属性为主键,@Column() 装饰器表示该属性为字段。

查询数据

TypeORM 提供了更加简洁的查询语句,例如,查询所有用户:

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

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

查询指定用户:

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

查询年龄大于 18 的用户:

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

TypeORM 还支持链式调用,例如,查询年龄大于 18 并且邮箱以 gmail.com 结尾的用户:

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

更新数据

更新数据也非常简单,例如,将 id 为 1 的用户的邮箱修改为 new-email@gmail.com

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

删除数据

删除数据也非常简单,例如,删除 id 为 1 的用户:

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

总结

TypeORM 是一个非常强大的 Node.js ORM 库,它提供了更加强大的类型检查和更加简洁的查询语句,使用起来非常方便。与 Sequelize 相比,TypeORM 更加适合 TypeScript 项目,可以提高代码的可维护性和可读性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/662e6bc6d3423812e4c0f920