引言
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