TypeORM 定义字段只能包含英文和数字 长度不超过12
时间: 2023-08-28 22:03:35 浏览: 48
在 TypeORM 中,你可以使用正则表达式和 `@Column` 装饰器的 `length` 选项来定义字段只能包含英文和数字且长度不超过12。例如:
```typescript
import { Entity, Column, PrimaryGeneratedColumn, Check } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 12, unique: true })
@Check("username regexp '^[A-Za-z0-9]{1,12}$'")
username: string;
@Column({ length: 50 })
password: string;
}
```
在上面的示例中,`@Check` 装饰器用来定义 `CHECK` 约束,限制 `username` 字段只能包含英文和数字,长度不超过12。正则表达式 `^[A-Za-z0-9]{1,12}$` 表示只能包含大小写字母和数字,且长度在1到12之间,必须包含至少一个字符。`@Column` 装饰器的 `length` 选项用来限制字段的最大长度为12。`unique` 选项用来确保该字段的值在数据库中是唯一的。
当你使用 TypeORM 同步数据库时,会自动创建表和约束,以确保字段只包含英文和数字且长度不超过12。如果输入的字符不符合要求,则会抛出异常并提示错误信息。
相关问题
typeorm 设置字段长度不超过12 只有英文字母和数字
在TypeORM中,可以使用@Column()装饰器来设置字段长度和类型。如果要限制字段长度不超过12,并且只能包含英文字母和数字,可以使用正则表达式来限制该字段的输入。具体实现可以参考下面的代码:
```
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 12 })
name: string;
@Column()
age: number;
@Column()
email: string;
@Column({
length: 12,
transformer: {
to(value: string): string {
return value;
},
from(value: string): string {
const regex = /^[a-zA-Z0-9]+$/;
if (!value.match(regex)) {
throw new Error('Name must contain only letters and digits');
}
return value;
},
},
})
alphanumericName: string;
}
```
在上面的代码中,@Column装饰器中,我们使用了transformer选项,将该字段的输入值进行正则表达式匹配,如果不符合要求,就会抛出异常。这样,每次创建新的User实体时,alphanumericName字段都会自动校验输入值是否符合要求。
typeorm 设置字段长度不超过12 只有英文
在TypeORM中,可以使用@Column()装饰器来设置字段长度和类型。如果要限制字段长度不超过12,并且只能包含英文字符,可以使用下面的代码:
```
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 12, charset: 'ascii' })
name: string;
@Column()
age: number;
@Column()
email: string;
}
```
在上面的示例中,@Column({ length: 12, charset: 'ascii' })装饰器将name字段的长度限制为12,并且设置了字符集为ascii,这样该字段只能包含英文字符。如果在创建User实体时,name字段的长度超过12或包含非英文字符,则会抛出异常。