TypeORM 是一个 ORM可以在 Node.js、浏览器、Cordova、Ionic、React Native、NativeScript、Expo 和 Electron 平台上运行,并且可以与 TypeScript 和 JavaScript (ES2021) 一起使用。它的目标是始终支持最新的 JavaScript 功能,并提供额外的功能,帮助您开发任何类型的数据库应用程序——从包含少量表的小型应用程序到包含多个数据库的大型企业应用程序。
TypeORM 支持的数据库比任何其他 JS/TS ORM 都要多:Google Spanner、Microsoft SqlServer、MySQL/MariaDB、MongoDB、Oracle、Postgres、SAP HANA 和 SQLite,并且我们还衍生了数据库和不同的驱动程序。
与目前所有其他 JavaScript ORM 不同,TypeORM 同时支持 Active Record 和 Data Mapper 模式,这意味着您可以以最高效的方式编写高质量、松耦合、可扩展且易于维护的应用程序。
TypeORM 深受其他 ORM 的影响,例如 Hibernate、Doctrine 和 Entity Framework。
还有更多……
使用 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()
请查看 sample 中的示例,了解使用方法。
您可以克隆以下几个代码库并开始使用:
有一些扩展可以简化 TypeORM 的使用以及将其与其他模块集成:
data-source.ts
- typeorm-codebase-syncrelations
对象 - typeorm-relationsrelations
- typeorm-relations-graphql