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

TypeORM 如何设置 PostgreSQL 中自动生成的 UUID

1个答案

1

在使用TypeORM操作PostgreSQL时,自动生成UUID非常有用,尤其是在处理需要唯一标识符的数据行时。要在TypeORM中设置自动生成UUID,您可以通过几种方式来实现。

使用数据库默认值

在PostgreSQL中,您可以利用uuid-ossp扩展,该扩展提供了生成UUID的函数。首先,确保您的PostgreSQL数据库安装了uuid-ossp模块。您可以通过运行以下SQL命令来安装:

sql
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

接着,在TypeORM的实体中,您可以使用@Column装饰器并指定default属性来调用uuid_generate_v4()函数,这样每次创建新记录时,都会自动生成UUID。例如:

typescript
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'varchar', length: 255 }) name: string; }

在上面的代码中,@PrimaryGeneratedColumn('uuid')告诉TypeORM使用UUID作为主键,并且默认使用PostgreSQL的uuid_generate_v4()函数生成新的UUID值。

使用TypeORM Decorators

如果您不想依赖于数据库的默认值或想在应用程序层面处理UUID生成,可以在TypeORM中使用BeforeInsert装饰器来在插入记录之前生成UUID。这可以通过使用JavaScript的uuid库完成,首先需要安装这个库:

bash
npm install uuid

然后,在实体中引入并使用它:

typescript
import { Entity, PrimaryColumn, Column, BeforeInsert } from 'typeorm'; import { v4 as uuidv4 } from 'uuid'; @Entity() export class User { @PrimaryColumn() id: string; @Column({ type: 'varchar', length: 255 }) name: string; @BeforeInsert() addId() { this.id = uuidv4(); } }

在这个例子中,每次插入新的User实例之前,addId函数都会被调用,将id字段设置为一个新生成的UUID。

总结

选择哪种方法取决于您对数据库与应用程序逻辑之间职责划分的偏好。使用数据库默认值(如uuid-ossp)可以更好地利用数据库的功能,而在应用层面生成UUID(如使用uuid库和@BeforeInsert)则提供了更多的灵活性和控制。在选择时,考虑应用的具体需求和预期的数据库交互方式。

2024年8月4日 16:56 回复

你的答案