首页 > 解决方案 > 如何使用 `sequelize-typescript` 定义表名?

问题描述

过去可以tableName在 Table 装饰器中定义参数,sequelize-typescript如下所示:

@Table({
  tableName: 'my-custom-tablename'
})
export class Tenants extends Model<Tenants> {
  @IsUUID(4)
  @Default(uuid())
  @PrimaryKey
  @Column
  uuid!: string;

  @CreatedAt
  @Column
  created_at!: Date;

  @UpdatedAt
  @Column
  updated_at!: Date;
}

使用最新版本似乎无法做到这一点,只有两个选项可用: modelNameversion,所以现在,TableName 自动映射到 ModelName (className)

如何传递与模型关联的真实表名?

标签: typescriptsequelize.jstypescript-typings

解决方案


@Table({
  tableName: 'user'
})
export class User extends Model<User> {
  @Column
  firstName!: string;

  @CreatedAt
  @Column
  createdAt!: Date;

  @UpdatedAt
  @Column
  updatedAt!: Date;

}

这对我来说适用于 sequelize-typescript (1.1.0) 和 sequelize (5.21.11) 的最新 npm 版本。

默认情况下,该表将命名为Users,但使用此代码将其设置为user


推荐阅读