• 列装饰器
    • @Column
    • @PrimaryColumn
    • @PrimaryGeneratedColumn
    • @ObjectIdColumn
    • @CreateDateColumn
    • @UpdateDateColumn
    • @VersionColumn
    • @Generated

    列装饰器

    @Column

    将实体中的属性标记为表列。例:

    1. @Entity("users")
    2. export class User {
    3. @Column({ primary: true })
    4. id: number;
    5. @Column({ type: "varchar", length: 200, unique: true })
    6. firstName: string;
    7. @Column({ nullable: true })
    8. lastName: string;
    9. @Column({ default: false })
    10. isActive: string;
    11. }

    @Column 接受可以使用的几个选项:

    • type: ColumnType - 列类型。受支持的supported column types其中之一。
    • name: string -数据库表中的列名。默认情况下,列名称是从属性的名称生成的。你也可以自定义命名。
    • length: string|number - 列类型的长度。 例如,如果要创建varchar(150)类型,请指定列类型和长度选项。
    • width: number - 列类型的显示宽度。 仅用于 MySQL integer types
    • onUpdate: string - ON UPDATE 触发器。仅用于 MySQL.
    • nullable: boolean - 设置列值NULLNOT NULL。默认值是 nullable: false
    • update: boolean - 指示”save”操作是否更新列值。如果为false,则只能在第一次插入对象时编写该值。默认值为”true”。
    • select: boolean - 定义在进行查询时是否默认隐藏此列。 设置为false时,列数据不会显示标准查询。 默认值select:true
    • default: string - 添加数据库级列的DEFAULT值。
    • primary: boolean - 将列标记为主列。 与@PrimaryColumn使用相同。
    • unique: boolean - 将列标记为唯一列(创建唯一约束)。
    • comment: string - 列的注释。 并非所有数据库类型都支持。
    • precision: number - 十进制(精确数字)列的精度(仅适用于十进制列),这是为值存储的最大位数。用于某些列类型。
    • scale: number - 十进制(精确数字)列的比例(仅适用于十进制列),表示小数点右侧的位数,且不得大于精度。用于某些列类型。
    • zerofill: boolean - 将ZEROFILL属性设置为数字列。 仅在 MySQL 中使用。如果是true,MySQL 会自动将UNSIGNED属性添加到此列。
    • unsigned: boolean - 将UNSIGNED属性设置为数字列。 仅在 MySQL 中使用。
    • charset: string - 定义列字符集。 并非所有数据库类型都支持。
    • collation: string - 定义列排序规则。
    • enum: string[]|AnyEnum - 在enum列类型中使用,以指定允许的枚举值列表。你可以指定值数组或指定枚举类。
    • asExpression: string - 生成的列表达式。 仅用于 MySQL.
    • generatedType: "VIRTUAL"|"STORED" - 生成的列类型。 仅用于 MySQL.
    • hstoreType: "object"|"string" - 返回类型HSTORE列。 以字符串或对象的形式返回值。 仅用于 Postgres.
    • array: boolean - 用于可以是数组的 postgres 列类型(例如 int [])。
    • transformer: ValueTransformer - 指定在读取或写入数据库时用于封送/取消封送此列的值转换器。
    • spatialFeatureType: string - 可选的要素类型(PointPolygonLineStringGeometry)用作空间列的约束。 如果没有指定,默认为Geometry。 仅在 PostgreSQL 中使用。
    • srid: number - 可选的 Spatial Reference ID 用作空间列约束。如果未指定,则默认为0。 标准地理坐标(WGS84 基准面中的纬度/经度)对应于EPSG 4326。 仅在 PostgreSQL 中使用。

    了解有关entity columns的更多信息。

    @PrimaryColumn

    将实体中的属性标记为表主列。与@column装饰器相同,但需将其primary选项设置为 true。例如:

    1. @Entity()
    2. export class User {
    3. @PrimaryColumn()
    4. id: number;
    5. }

    了解有关 entity columns的更多信息。

    @PrimaryGeneratedColumn

    将实体中的属性标记为表生成的主列。它创建的列是主列,值自动生成。例如:

    1. @Entity()
    2. export class User {
    3. @PrimaryGeneratedColumn()
    4. id: number;
    5. }

    有两种策略:

    • increment - 使用 AUTO_INCREMENT / SERIAL / SEQUENCE(取决于数据库类型)生成增量编号。
    • uuid - 生成唯一的uuid字符串。

    默认生成策略是increment,将其更改为uuid,只需将其作为 decorator 的第一个参数传递:

    1. @Entity()
    2. export class User {
    3. @PrimaryGeneratedColumn("uuid")
    4. id: number;
    5. }

    了解有关entity columns的更多信息。

    @ObjectIdColumn

    将实体中的属性标记为 ObjectID。此装饰器仅用于 MongoDB。MongoDB 中的每个实体都必须具有 ObjectID 列。例如:

    1. @Entity()
    2. export class User {
    3. @ObjectIdColumn()
    4. id: ObjectID;
    5. }

    了解有关MongoDB的更多信息。

    @CreateDateColumn

    特殊列,自动设置为实体的插入时间。不需要在此列中手动写入值,该值会自动设置。例如:

    1. @Entity()
    2. export class User {
    3. @CreateDateColumn()
    4. createdDate: Date;
    5. }

    @UpdateDateColumn

    每次从实体管理器或存储库调用save时自动设置为实体更新时间的特殊列。不需要在此列中手动写入值,该值会自动设置。

    1. @Entity()
    2. export class User {
    3. @UpdateDateColumn()
    4. updatedDate: Date;
    5. }

    @VersionColumn

    每次从实体管理器或存储库调用save时自动设置为实体版本(增量编号)的特殊列。不需要在此列中手动写入值,该值会自动设置。

    1. @Entity()
    2. export class User {
    3. @VersionColumn()
    4. version: number;
    5. }

    @Generated

    将列标记为生成的值。 例如:

    1. @Entity()
    2. export class User {
    3. @Column()
    4. @Generated("uuid")
    5. uuid: string;
    6. }

    在将实体插入数据库之前,只会生成一次值。