gpt4 book ai didi

typeorm - 如何删除自动生成的 UUID 中的破折号 (-) - typeorm

转载 作者:行者123 更新时间:2023-12-05 01:39:57 65 4
gpt4 key购买 nike

我使用 UUID 作为我的实体的主键,它工作得很好。但我想删除那些破折号。

现在 ID 被保存为 8e5365f4-3d42-4274-bafc-93b97bd6e3f2 36 个字符

我想要的是 8e5365f43d424274bafc93b97bd6e3f2 32 个字符

我没有在 @PrimaryGeneratedColumn('uuid') 中看到任何使用转换器的选项,有没有简单的方法来存档它?

最佳答案

使用@PrimaryGeneratedColumn('uuid') 时不能删除破折号。UUID 由数据库(例如 postgres)生成,或者如果数据库不支持,则由函数生成。请参阅 Typeorm 来源(https://github.com/typeorm/typeorm/blob/master/src/query-builder/InsertQueryBuilder.ts):

else if (column.isGenerated && column.generationStrategy === "uuid" && !this.connection.driver.isUUIDGenerationSupported() && value === undefined) {

const paramName = "uuid_" + column.databaseName + valueSetIndex;
value = RandomGenerator.uuid4();
this.expressionMap.nativeParameters[paramName] = value;
expression += this.connection.driver.createParameter(paramName, parametersCount);
parametersCount++;

// if value for this column was not provided then insert default value
}

如果你真的想要这个,你需要自己生成,例如:

import { BeforeInsert, Entity, PrimaryColumn } from 'typeorm';
import { v4 as uuid4 } from 'uuid';

@Entity({})
export class User {
@PrimaryColumn()
uuid: string;

@BeforeInsert()
generateUuid() {
this.uuid = uuid4().replace(/-/g, '');
}
}

关于typeorm - 如何删除自动生成的 UUID 中的破折号 (-) - typeorm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412880/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com