TypeORM for TypeScript: 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 TypeORM 以及为什么需要它?



TypeORM 是一个用于 TypeScript 和 JavaScript 的强大对象关系映射库 (ORM),它支持多种数据库:PostgreSQL、MySQL、MariaDB、SQLite、MS SQL Server、Oracle 和 MongoDB(部分支持)。它通过面向对象的方法提供了一种与关系型数据库交互的便捷方式,允许开发人员将表视为类,将记录视为对象。



使用 TypeORM 的主要原因:

  • 类型化: 与 TypeScript 完全集成,提供严格的类型检查和 IDE 中的自动补全。
  • 声明式方法: 通过装饰器或模式定义数据库模式。
  • 自动迁移: 自动创建和同步数据库模式。
  • Active Record 和 Data Mapper: 支持两种流行的设计模式。
  • 关系支持: 一对一、一对多、多对多。
  • 查询构建器: 用于复杂 SQL 查询的灵活查询构建器。
  • 跨平台: 适用于 Node.js、浏览器、React Native 和 Ionic。


安装 TypeORM



要安装 TypeORM 和必要的数据库驱动程序,请使用 npm(或 yarn):



// 安装 TypeORMnpm install typeorm --save

// 安装 reflect-metadata(装饰器必需)npm install reflect-metadata --save

// 安装 PostgreSQL 驱动程序npm install pg --save

// 安装 MySQL/MariaDB 驱动程序npm install mysql2 --save

// 安装 SQLite 驱动程序npm install sqlite3 --save

// 安装 SQL Server 驱动程序npm install mssql --save

// 安装 MongoDB 驱动程序(实验性)npm install mongodb --save


安装后,在 tsconfig.json 中添加:



{  "compilerOptions": {    "emitDecoratorMetadata": true,    "experimentalDecorators": true  }}


快速入门及代码示例



我们将创建一个简单的用户管理应用程序,使用 SQLite(无需安装服务器)。



1. 创建 data-source.ts 文件用于配置连接:



import { DataSource } from "typeorm";import { User } from "./entity/User";

export const AppDataSource = new DataSource({ type: "sqlite", database: "database.sqlite", synchronize: true, logging: true, entities: [User], subscribers: [], migrations: [],});

// 初始化连接AppDataSource.initialize() .then(() => { console.log("数据源已初始化!"); }) .catch((err) => { console.error("数据源初始化期间出错:", err); });


2. 在 entity/User.ts 文件中创建 User 实体:



import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()export class User { @PrimaryGeneratedColumn() id: number;

@Column() firstName: string;

@Column() lastName: string;

@Column({ unique: true }) email: string;

@Column({ default: true }) isActive: boolean;}


3. 创建 index.ts 文件用于演示操作:



import "reflect-metadata";import { AppDataSource } from "./data-source";import { User } from "./entity/User";

async function main() { await AppDataSource.initialize();

// 创建一个新用户 const user = new User(); user.firstName = "伊万"; user.lastName = "彼得罗夫"; user.email = "ivan@example.com"; user.isActive = true;

// 保存到数据库 await AppDataSource.manager

推荐