typeorm 是做什麼的?
使用 TypeORM 進行開發的準則,TypeORM 是一個功能完整的 ORM,支援多種資料庫,適用於 TypeScript 和 JavaScript。
概述
TypeORM 是一種物件關係映射工具,可在 TypeScript 和 JavaScript 應用程式中,簡化資料庫操作與物件模型之間的轉換。本技能提供的準則涵蓋:
- 定義實體和欄位
- 建立關聯(一對一、一對多、多對多)
- 使用查詢建構器與原生 SQL
- 執行資料遷移
- 最佳實務與效能優化
支援的資料庫
TypeORM 支援多種關聯式與文件式資料庫,包括但不限於:
- MySQL / MariaDB
- PostgreSQL
- SQLite
- Microsoft SQL Server
- Oracle
- MongoDB(文件式)
- CockroachDB
常用的 TypeORM 命令
建立實體
npx typeorm entity:create src/entity/User
執行遷移
npx typeorm migration:run
回滾遷移
npx typeorm migration:revert
實體範例
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column({ unique: true })
email: string;
@Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
createdAt: Date;
}
關聯範例
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { Post } from './Post';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToMany(() => Post, (post) => post.user)
posts: Post[];
}
查詢範例
import { getRepository } from 'typeorm';
import { User } from './entity/User';
const userRepository = getRepository(User);
const users = await userRepository.find({ where: { isActive: true }, relations: ['posts'] });
最佳實務
- 始終為頻繁查詢的欄位建立索引
- 使用 Data Mapper 模式進行複雜業務邏輯的隔離
- 避免 N+1 查詢問題,善用
relations或join選項 - 將資料庫連線設定儲存在環境變數中
- 定期執行遷移以保持資料庫結構與實體同步
更多資訊
更多詳細資訊,請參閱 TypeORM 官方文件 。