typeorm column 中的type和charset的区别
时间: 2024-03-02 17:52:54 浏览: 29
在 TypeORM 中,`type` 和 `charset` 都是用于指定数据库表列的数据类型和字符集的选项。它们的区别如下:
- `type`:用于指定列的数据类型,例如字符串、数字、日期等。不同的数据库支持的数据类型不同,TypeORM 中封装的各种数据库的数据类型映射关系可以参考官方文档。例如,在 MySQL 中,`type` 可以是 `varchar`、`int`、`date` 等。
- `charset`:用于指定列的字符集,也就是该列中允许包含的字符集。在某些数据库中,例如 MySQL,字符集可以影响到排序、比较等操作的结果。常见的字符集有 `utf8mb4`、`utf8`、`gbk` 等。注意,`charset` 只有在 `type` 为字符串类型时才有意义,在数值类型和日期类型等列中不需要指定。
因此,定义一个 TypeORM 列时,可以同时指定它的 `type` 和 `charset` 选项,例如:
```typescript
@Column({
type: 'varchar',
charset: 'utf8mb4'
})
name: string;
```
上面的代码定义了一个名为 `name` 的字符串类型列,在 MySQL 中使用的数据类型是 `varchar`,并且使用 `utf8mb4` 字符集。
相关问题
typeorm column 中的type
在TypeORM中,可以使用@Column()装饰器来设置实体类中的字段属性。其中,type属性用于指定该字段在数据库中的数据类型。TypeORM支持的常用数据类型包括:
- varchar: 可变长度字符串类型,需要指定长度。例如:`@Column({ type: 'varchar', length: 50 })`
- text: 长文本类型,不需要指定长度。例如:`@Column({ type: 'text' })`
- integer: 整数类型。例如:`@Column({ type: 'integer' })`
- float: 浮点数类型。例如:`@Column({ type: 'float' })`
- double: 双精度浮点数类型。例如:`@Column({ type: 'double' })`
- decimal: 十进制数类型,需要指定精度和小数位数。例如:`@Column({ type: 'decimal', precision: 10, scale: 2 })`
- boolean: 布尔类型。例如:`@Column({ type: 'boolean' })`
- date: 日期类型。例如:`@Column({ type: 'date' })`
- time: 时间类型。例如:`@Column({ type: 'time' })`
- datetime: 日期时间类型。例如:`@Column({ type: 'datetime' })`
- json: JSON类型。例如:`@Column({ type: 'json' })`
除了上述常用数据类型外,TypeORM还支持其他更多的数据类型。具体可参考TypeORM官方文档。
typeorm column 中的nullable
在TypeORM中,可以使用@Column()装饰器来设置实体类中的字段属性。其中,nullable属性用于指定该字段是否可以为null。默认情况下,nullable属性为true,即该字段可以为null。如果将nullable属性设置为false,则该字段不能为空。具体实现可以参考下面的代码:
```
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: false })
name: string;
@Column({ nullable: true })
age: number;
@Column()
email: string;
}
```
在上面的代码中,@Column装饰器中,我们分别设置了name和age字段的nullable属性。name字段的nullable属性为false,即该字段不能为空。而age字段的nullable属性为true,即该字段可以为null。如果在创建User实体时,name字段的值为null,则会抛出异常。如果age字段的值为null,则不会产生异常。