我想使用 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"
我怎样才能实现这一目标?
这可能完全是离题的,但我记得前段时间使用这个库并对类似的东西感到非常痛苦。最终对我来说的解决方案(或者更确切地说,错误)是装饰器更喜欢某种顺序。
我的建议很可能完全没用——但是嘿。最好的情况是,你可以调整装饰器的顺序并且它可以工作。最坏的情况是,你浪费了宝贵的时间。值得一试。
这是正确的顺序:
@PrimaryKey
@Default(DataType.UUIDV4)
@Column(DataType.UUID)
public id: any;