在 Sequelize with "Type support" (NestJS) 中使用一些默认列扩展基类



我有一个Sequelize基类,包含updated_at、created_at列等。我想扩展上面的基类,以避免在每个模型中写入重复的列。我也希望有打字支持(显示列名(。

当前实施。

支持打字的BaseClass

export type ModelAttrs<T> = Omit<T, keyof Model>

export default class BaseModel<T> extends Model<ModelAttrs<T>, Partial<ModelAttrs<T>>> {
}

这将有助于显示基类下的列。

默认列基本类


export default class DefaultValuesModel extends BaseModel<DefaultValuesModel> {
@Column({
type: DataType.DATE,
defaultValue: DataType.NOW,
})
created_at: Date;
@Column({
type: DataType.DATE,
defaultValue: DataType.NOW,
})
updated_at: Date;
@Column({
type: DataType.BOOLEAN,
defaultValue: false,
})
is_deleted: Boolean;
@Column({
type: DataType.DATE,
defaultValue: DataType.NOW,
})
deleted_at: Date;
}

我想做的是,我想创建具有UserModel和DefaultValuesModel类的类型支持的User class by extending DefaultValuesModel。因此,基本上UserModel应该显示UserModel和DefaultValuesModel中的列。

我通过引用类型本身中的DefaultValuesModel来更新BaseModel。


export type ModelAttrs<T> = Omit<T, keyof Model> & Omit<DefaultValuesModel, keyof Model>
export default class BaseModel<T> extends Model<ModelAttrs<T>, Partial<ModelAttrs<T>>> {
}

现在我可以扩展BaseClass以获得类型支持和默认列支持。

export default class UserIdentityModel extends BaseModel<UserIdentityModel> {
}

最新更新