TypeScript & JavaScript ORM for Node.js — supports PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Oracle, and more.
TypeORM 是一个 ORM,可运行于 Node.js、浏览器、Cordova、Ionic、React Native、NativeScript、Expo 和 Electron 等平台,并可配合 TypeScript 和 JavaScript(ES2023)使用。它的目标始终是支持最新的 JavaScript 特性,并提供更多辅助功能,帮助你开发任何类型的使用数据库的应用——从仅有几张表的小型应用,到使用多个数据库的大型企业级应用。
TypeORM 支持的数据库比其他任何 JS/TS ORM 都多:Google Spanner、Microsoft SqlServer、MySQL/MariaDB、MongoDB、Oracle、Postgres、SAP HANA 和 SQLite,以及衍生数据库和不同驱动程序。
TypeORM 同时支持 Active Record 和 Data Mapper 模式,不同于当前其他所有 JavaScript ORM,这意味着你可以以最高效的方式,编写高质量、低耦合、可扩展且可维护的应用。
TypeORM 深受其他 ORM 的影响,例如 Hibernate、 Doctrine 和 Entity Framework。
功能
- 同时支持 DataMapper 和 ActiveRecord(由你选择)。
- 实体和字段。
- 数据库特定字段类型。
- 实体管理器。
- 仓库和自定义仓库。
- 简洁的对象关系模型。
- 关联(关系)。
- 立即加载和延迟加载关系。
- 单向、双向和自引用关系。
- 支持多种继承模式。
- 级联。
- 索引。
- 事务。
- 迁移和自动迁移生成。
- 连接池。
- 复制。
- 使用多个数据库实例。
- 使用多种数据库类型。
- 跨数据库和跨模式查询。
- 语法优雅、灵活且强大的 QueryBuilder。
- 左连接和内连接。
- 适用于连接查询的正确分页。
- 查询缓存。
- 原始结果流式传输。
- 日志。
- 监听器和订阅者(钩子)。
- 支持闭包表模式。
- 在模型或独立配置文件中声明模式。
- 支持 MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP Hana / sql.js。
- 支持 MongoDB NoSQL 数据库。
- 适用于 Node.js / 浏览器 / Ionic / Cordova / React Native / NativeScript / Expo / Electron 平台。
- 支持 TypeScript 和 JavaScript。
- 支持 ESM 和 CommonJS。
- 生成的代码高性能、灵活、简洁且可维护。
- 遵循所有可能的最佳实践。
- CLI。
还有更多……
使用 TypeORM 时,你的模型将如下所示:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
age: number
}
而你的领域逻辑如下所示:
const userRepository = MyDataSource.getRepository(User)
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.age = 25
await userRepository.save(user)
const allUsers = await userRepository.find()
const firstUser = await userRepository.findOneBy({
id: 1,
}) // find by id
const timber = await userRepository.findOneBy({
firstName: "Timber",
lastName: "Saw",
}) // find by firstName and lastName
await userRepository.remove(timber)
或者,如果你更倾向于使用 ActiveRecord 实现,也可以使用它:
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm"
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
age: number
}
那么,你的领域逻辑将如下所示:
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.age = 25
await user.save()
const allUsers = await User.find()
const firstUser = await User.findOneBy({
id: 1,
})
const timber = await User.findOneBy({
firstName: "Timber",
lastName: "Saw",
})
await timber.remove()
示例
以下是一些可供你克隆并快速上手的仓库:
- TypeORM 与 TypeScript 使用示例
- TypeORM 与 JavaScript 使用示例
- TypeORM 与 JavaScript、Babel 使用示例
- 在浏览器中使用 TypeScript 和 SystemJS 的 TypeORM 示例
- 在浏览器中使用 TypeScript 和 React 的 TypeORM 示例
- Express 与 TypeORM 使用示例
- Koa 与 TypeORM 使用示例
- TypeORM 与 MongoDB 使用示例
- 在 Cordova 应用中使用 TypeORM 的示例
- 在 Ionic 应用中使用 TypeORM 的示例
- TypeORM 与 React Native 使用示例
- TypeORM 与 Nativescript-Vue 使用示例
- TypeORM 与 Nativescript-Angular 使用示例
- 在 Electron 中使用 JavaScript 与 TypeORM 的示例
- 在 Electron 中使用 TypeScript 与 TypeORM 的示例
扩展
以下是一些扩展,可简化 TypeORM 的使用,并帮助其与其他模块集成:
- 从现有数据库生成模型 - typeorm-model-generator
- Fixtures 加载器 - typeorm-fixtures-cli
- ER 图生成器 - typeorm-uml
- 另一个 ER 图生成器 - erdia
- 创建、删除并初始化数据库 - typeorm-extension
- 生成迁移或实体后自动更新
data-source.ts- typeorm-codebase-sync - 便捷地操作
relations对象 - typeorm-relations - 基于 GraphQL 查询自动生成
relations- typeorm-relations-graphql - 从 Valibot schema 生成 TypeORM 实体 - piying-orm
- 将 REST API 查询参数(字段、筛选、关系、分页、排序)应用于查询构建器 - rapiq
贡献指南
有关贡献的详细信息,请参见这里;开发环境的搭建方法,请参见这里。
本项目的存在,离不开所有贡献者的支持:
赞助者
开源开发既艰难又耗时。如果您希望助力 TypeORM 的未来,可以成为赞助者,让我们核心团队将更多时间用于 TypeORM 的改进和新功能开发。
冠军赞助
成为冠军赞助者,并获得我们核心贡献者提供的高级技术支持。成为冠军赞助者
支持者
通过每月捐助支持 TypeORM 的开发。成为支持者
社区
加入我们的支持者社区,帮助 TypeORM 持续发展。成为社区支持者
赞助者
按您意愿进行一次性或定期赞助。成为赞助者
项目介绍
TypeORM 是一款适用于 JavaScript 和 TypeScript 的 ORM(对象关系映射)工具库,旨在帮助开发者利用 Node.js 对关系型数据库进行操作。它不仅提供了一种将 JavaScript 对象映射至关系型数据库的方法,还支持包括 MySQL、PostgreSQL、MariaDB、SQLite 在内的多种数据库系统。此外,该库还具备查询构建器和实体关系映射的功能。其主要特性包括:对 TypeScript 的支持、异步操作、迁移及种子数据功能的实现,以及复杂查询的处理能力。【此简介由AI生成】