TypeORMORMNode.js开源
TypeORM 历经近十年发展终于迎来 1.0 版本,标志着项目维护工作重启
收录于 2026/6/16 10:00:06
一、项目背景
- ORM 定位:TypeORM 是面向 TypeScript 和 JavaScript 的开源 ORM,可运行于 Node.js 及其他平台。
- 设计模式:同时支持 Data Mapper(数据映射) 和 Active Record(活动记录) 两种模式。
- 数据库兼容:PostgreSQL、MySQL、MariaDB、SQLite、SQL Server、Oracle Database、SAP HANA、MongoDB、Google Cloud Spanner。
- 历史包袱:自 2016 年创建后长期停留在 0.3.x,社区多年担忧项目"走向消亡或已被弃用",Reddit、Hacker News 上类似讨论屡见不鲜。
- 维护者交接:此次发布源于 2024 年底新维护者接手,项目活动随之重新活跃。
二、1.0 之前的活跃度数据
- 2025 年共发布 8 个补丁版本
- 合并 575 个 PR(前一年仅 63 个,增幅约 9 倍)
- 关闭 超过 2300 个 Issue
- 每周下载量仍保持在 近 200 万次
三、1.0 主要变化
1. 基础架构现代化
- 编译目标:升级到 ECMAScript 2023
- Node.js 支持:
- 最低支持版本:Node.js 20
- Node 16 / 18 不再受支持
- 依赖项清理(移除资源占用较大的旧依赖):
| 旧依赖 | 新替代 |
|---|---|
| 旧版 mysql 客户端 | mysql2 |
sqlite3 | better-sqlite3 |
| 哈希功能 | 原生 crypto 模块 |
2. 实用的数据操作新特性
InsertQueryBuilder.valuesFromSelect():可直接执行INSERT INTO ... SELECT FROM ...语句。update()/upsert()返回选项:在支持RETURNING子句的数据库中,可获取更新/插入后的数据。QueryRunner支持await自动清理:简化资源管理。- 安全性强化:
- 所有驱动程序在进行模式检查和 DDL 操作时采用参数化查询和转义标识符
- 对
orderBy条件进行运行时验证 - 对
.limit()进行更严格的输入检查
四、迁移指南
1. 自动迁移工具 codemod
npx @typeorm/codemod v1 src/ --dry
- 支持原地更新导入语句
- 自动重命名 API
- 自动修改 find 选项语法
- 自动更新依赖项
--dry标志可预览更改
2. 需要手动修改的破坏性变更
- 移除
Connection别名:统一改用DataSource - 移除
findByIds和findOneById方法 - 新默认行为:当
where条件中的值无效时,系统抛出异常而非静默忽略(行为更安全、更可预测) - NestJS 用户:基本不受影响,但应升级
@nestjs/typeorm至 v11.0.1 或更高版本(codemod 会自动更新版本)
五、维护团队信息
- 新维护者接手时间:2024 年底
- 社区与生态反馈:
- 在 Threads 上,有开发者评价这次发布是 JavaScript ORM 领域的重要信号,并特别提到对
INSERT INTO SELECT的支持以及跨驱动程序的隔离级别 - 1.0 版本被广泛视为维护工作重回正轨的明证
- 在 Threads 上,有开发者评价这次发布是 JavaScript ORM 领域的重要信号,并特别提到对
六、竞争格局
TypeORM 1.0 发布的背景是 ORM 市场竞争激烈:
- Prisma:在 7.0 版本中重写了查询引擎
- Drizzle:在 2026 年 Encore 的对比评测中,于边缘部署和以 SQL 为核心的团队场景下排名第一
- TypeORM 定位:根据上述对比报告,TypeORM 被定位为现有代码库、企业级模式和非主流数据库场景的首选;1.0 版本的发布正是为了捍卫这一细分市场
七、结论
TypeORM 1.0 不仅仅是一个版本号的变化,更承载着社区对项目"复活"的期待:
- 通过架构现代化和依赖清理,偿还了长期的技术债
- 补齐了
INSERT INTO SELECT等实用的数据操作 API - 借 codemod 工具将升级成本控制在可控范围
- 明确了自己的细分市场定位——存量代码、企业模式、多元数据库
对于仍在大规模使用 TypeORM 的团队,1.0 是一个值得跟进的升级窗口;对于在 Prisma / Drizzle / TypeORM 之间选型的团队,1.0 也让 TypeORM 重新成为可认真考虑的选项。