定义实体模型
我们使用 Entity 来定义一个实体模型类。
// entity/photo.ts import { Entity } from 'typeorm'; @Entity('photo') export class Photo { id: number; name: string; description: string; filename: string; views: number; isPublished: boolean; }
如果表名和当前的实体名不同,可以在参数中指定。
// entity/photo.ts import { Entity } from 'typeorm'; @Entity('photo_table_name') export class Photo { id: number; name: string; description: string; filename: string; views: number; isPublished: boolean; }
添加数据库列
通过 typeorm 提供的 @Column 装饰器 来修饰属性,每一个属性对应一个列。
// entity/photo.ts import { Entity, Column } from 'typeorm'; @Entity() export class Photo { @Column() id: number; @Column() name: string; @Column() description: string; @Column() filename: string; @Column() views: number; @Column() isPublished: boolean; }
创建主键列
每个实体必须至少具有一个主键列。要使列成为主键,您需要使用 @PrimaryColumn 装饰器。
// entity/photo.ts import { Entity, Column, PrimaryColumn } from 'typeorm'; @Entity() export class Photo { @PrimaryColumn() id: number; @Column() name: string; @Column() description: string; @Column() filename: string; @Column() views: number; @Column() isPublished: boolean; }
创建自增主键列
现在,如果要设置自增的 id 列,需要将 @PrimaryColumn 装饰器更改为 @PrimaryGeneratedColumn 装饰器:
// entity/photo.ts import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class Photo { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column() description: string; @Column() filename: string; @Column() views: number; @Column() isPublished: boolean; }
此外还有有几种特殊的列类型可以使用:
●@CreateDateColumn 是一个特殊列,自动为实体插入日期。
●@UpdateDateColumn 是一个特殊列,在每次调用实体管理器或存储库的save时,自动更新实体日期。
●@VersionColumn 是一个特殊列,在每次调用实体管理器或存储库的save时自动增长实体版本(增量编号)。
●@DeleteDateColumn 是一个特殊列,会在调用 soft-delete(软删除)时自动设置实体的删除时间。