typeorm

TypeORM簡介

TypeORM是一個ORM框架,是使用TypeScript和JavaScript編寫的,它支持多種關係型數據庫,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。TypeORM可以幫助我們更輕鬆地管理數據庫,不需要編寫大量的SQL語句。

安裝

TypeORM可以使用npm進行安裝,我們可以在終端中輸入以下命令:

npm i typeorm --save

還需要安裝連接數據庫的庫,例如mysql、pg等:

npm i mysql --save
npm i pg --save

配置

TypeORM的配置是通過一個配置文件實現的。我們需要在項目根目錄下創建一個ormconfig.json文件,這個文件包含了我們連接數據庫所需要的配置,例如數據庫類型、主機名、用戶名、密碼、端口以及數據庫名等信息。

一個簡單的ormconfig.json文件如下:

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "password",
  "database": "database_name",
  "entities": [
    "src/entity/**/*.ts"
  ],
  "synchronize": true
}

實體

實體是TypeORM的核心概念,它們是映射到數據庫表的類。TypeORM支持使用裝飾器將類轉換爲實體。一個簡單的實體類如下:

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

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

  @Column()
  name: string;

  @Column()
  age: number;
}

實體類中使用@Entity()裝飾器來表示這是一個實體類,並使用@PrimaryGeneratedColumn()裝飾器表示這是主鍵列。

倉庫

倉庫是管理實體的類。TypeORM會爲每個實體自動生成一個倉庫類,我們也可以手動創建一個倉庫類來管理實體,使用@EntityRepository()裝飾器來表示這是一個倉庫類。

import { EntityRepository, Repository } from "typeorm";
import { User } from "../entity/user.entity";

@EntityRepository(User)
export class UserRepository extends Repository<User> {}

查詢

TypeORM提供了一種基於查詢構造器的查詢語言,這使得構建SQL查詢更加簡便。例如,在倉庫類中查詢所有用戶的語句如下:

const users = await userRepository.find();

我們也可以添加一些條件查詢:

const users = await userRepository.find({
  where: {
    name: "John",
    age: MoreThan(18)
  },
  order: {
    name: "ASC"
  },
  skip: 10,
  take: 10
})

關係

TypeORM支持多種關係,包括一對一、一對多、多對多等。例如,一個用戶可以擁有多個訂單:

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

  @Column()
  name: string;

  @Column()
  age: number;

  @OneToMany(type => Order, order => order.user)
  orders: Order[];
}

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

  @Column()
  amount: number;

  @ManyToOne(type => User, user => user.orders)
  user: User;
}

在用戶實體中,我們使用@OneToMany()來表示一個用戶可以擁有多個訂單。在訂單實體中,我們使用@ManyToOne()來表示多個訂單可以對應一個用戶。

總結

TypeORM是一個強大的ORM框架,提供了多種功能來管理數據庫。它支持多種數據庫,使用TypeScript或JavaScript編寫,易於使用和配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章