Skip to content

分步指南 ​

创建表 ​

创建模型 ​

首先,你得有一个模型,才能创建表。比如下面的 test模型:

ts
export class Test {
  id: string;
  title: string;
  content: string;
}

创建实体 ​

实体是被@Entity装饰器标记的模型,这样的模型会被创建为数据库的一个表。

ts
import { Entity } from "typeorm";

@Entity()
export class Test {
  id: string;
  title: string;
  content: string;
}

现在,Test实体会创建对应的数据库表。但是表创建了,还没创建列呢!

添加列 ​

用@Column装饰器

ts
import { Entity } from "typeorm";

@Entity()
export class Test {
  @Column()
  id: string;
  @Column()
  title: string;
  @Column()
  content: string;
}

这样,Test表就会添加这三列。列的数据库类型会根据属性类型推断, 比如 number 映射为integer,string会映射为varchar等等。

创建了列,但是没有主键列,每一个数据库的表,都要有主键列

使用@PrimaryColumn装饰器来设置主键列

ts
import { Entity } from "typeorm";

@Entity()
export class Test {
  @PrimaryColumn()
  id: string;
  @Column()
  title: string;
  @Column()
  content: string;
}

如果希望id是自增模型的话,可以使用@PrimaryGenerateColumn装饰器:

ts
import { Entity } from "typeorm";

@Entity()
export class Test {
  @PrimaryGenerateColumn()
  id: string;
  @Column()
  title: string;
  @Column()
  content: string;
}

现在还只是默认映射,我们可以指定更合适的数据类型:

ts
import { Entity } from "typeorm";

@Entity()
export class Test {
  @PrimaryGenerateColumn()
  id: string;
  @Column({
    length: 100,
  })
  title: string;
  @Column("text")
  content: string;
}

创建DataSource ​

ts
import "reflect-metadata";
import { DataSource } from "typeorm";
import { env } from "../config/env";
import { TestEntity } from "./entities/test";

export const dataSource = new DataSource({
  type: "better-sqlite3",
  database: env.dbPath,
  entities: [TestEntity],
  synchronize: true,
});
// 初始化连接数据库、注册实体并同步数据库架构
try {
  await AppDataSource.initialize();
} catch (error) {
  console.log(error);
}

选择你的管理数据的途径 ​

你现在有两种选择,

  • 使用实体管理器Entity Manager
  • 使用仓库Repositoryies