如何使用uuid作为带有sequelize-typescript注释的主键类型?

问题描述 投票:0回答:2

我想使用 UUID 而不是 Sequelize 强加的默认自动递增整数。请注意,我必须使用 npm 包 sequelize-typescript

这是我迄今为止的尝试。

export class SequelizeIterationModel extends Model<IterationModelAttributes> {
  @IsUUID(4)
  @PrimaryKey
  @Column({
    type: DataTypes.UUID,
    defaultValue: DataTypes.UUIDV4,
    primaryKey: true,
  })
  public id!: string;

  @BelongsTo(() => SequelizeBuildModel)
  public build!: SequelizeBuildModel;

  @ForeignKey(() => SequelizeBuildModel)
  public buildId!: number;

  @Column({ type: DataTypes.JSON })
  public config!: Record<string, unknown>;
}

但是我无法摆脱这个错误:

invalid input syntax for integer: "6ecfcc0e-b0de-4991-bf45-e190534293c2"

我怎样才能实现这一目标?

typescript annotations uuid sequelize-typescript
2个回答
0
投票

这可能完全是离题的,但我记得前段时间使用这个库并对类似的东西感到非常痛苦。最终对我来说的解决方案(或者更确切地说,错误)是装饰器更喜欢某种顺序。

我的建议很可能完全没用——但是嘿。最好的情况是,你可以调整装饰器的顺序并且它可以工作。最坏的情况是,你浪费了宝贵的时间。值得一试。


0
投票

这是正确的顺序:

@PrimaryKey
@Default(DataType.UUIDV4)
@Column(DataType.UUID)
public id: any;
© www.soinside.com 2019 - 2024. All rights reserved.