乐闻世界logo
搜索文章和话题

How to define varchar and enum in TypeORM?

4 个月前提问
3 个月前修改
浏览次数66

1个答案

1

在TypeORM中,你可以使用装饰器(Decorators)来定义实体(Entity)的属性并指定其数据类型。对于varcharenum类型的字段,你可以使用@Column装饰器并传递适当的参数。

以下是在TypeORM实体类中定义varcharenum类型字段的一个例子:

typescript
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; export enum UserRole { ADMIN = 'admin', EDITOR = 'editor', VIEWER = 'viewer', } @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column({ type: 'varchar', // 指定字段类型为 varchar length: 255, // 指定字段长度 nullable: false // 字段是否可以为 null }) username: string; // 数据库中的字段将是 varchar(255) 类型 @Column({ type: 'enum', // 指定字段类型为 enum enum: UserRole, // 指定 enum 的类型 default: UserRole.VIEWER // 设置默认值 }) role: UserRole; // 数据库中的字段将是一个 enum 类型 }

在上面的例子中,我们定义了一个User实体,其中包含了一个username字段,该字段被定义为varchar类型,并且不允许null值,并且最大长度为255个字符。同时,我们还定义了一个role字段,其类型为enum,我们通过enum选项指定了对应的 TypeScript 枚举。

请注意,当你使用enum类型字段时,数据库中的枚举类型支持可能会因你使用的数据库类型而异。在某些数据库中(例如MySQL和PostgreSQL),enum是一个支持的本地类型,在其他数据库中,它可能会以不同的方式实现,或者需要使用到其他类型(如varchar)来模拟枚举。

确保在运行迁移之前已经定义了所有的枚举值,因为添加或删除枚举的值可能需要手动修改数据库架构。

2024年6月29日 12:07 回复

你的答案