【问题标题】:Specified type of property cannot be automatically resolved to a sequelize data type. Please define the data type manually指定类型的属性无法自动解析为 sequelize 数据类型。请手动定义数据类型
【发布时间】:2021-07-19 19:48:57
【问题描述】:

我在sequelize-typescript 中定义UserProduct 之间的一对多关系。

以下是模型:

产品.ts

@Table
export class Product extends Model {
    @Column({ primaryKey: true })
    id!: string

    @Column
    title!: string

    @Column({ type: DataType.DOUBLE })
    price!: number

    @Column
    imageUrl!: string

    @Column
    description?: string

    @ForeignKey(() => User)
    @Column
    userId?: string

    @BelongsTo(() => User)
    user?: User
}

用户.ts

@Table
export class User extends Model {
    @Column({ primaryKey: true })
    id!: string

    @Column
    name!: string

    @Column
    email!: string

    @Column
    @HasMany(() => Product)
    products?: Product[]
}

我收到以下错误:

Specified type of property 'products' cannot be automatically resolved to a sequelize data type. Please define the data type manually

这是完整的堆栈跟踪:

*ProjectPath*/node_modules/sequelize-typescript/dist/model/shared/model-service.js:64
    throw new Error(`Specified type of property '${propertyName}'
          ^
Error: Specified type of property 'products'
            cannot be automatically resolved to a sequelize data type. Please
            define the data type manually
    at Object.getSequelizeTypeByDesignType (*ProjectPath*/node_modules/sequelize-typescript/dist/model/shared/model-service.js:64:11)
    at annotate (*ProjectPath*/node_modules/sequelize-typescript/dist/model/column/column.js:32:44)
    at Column (*ProjectPath*/node_modules/sequelize-typescript/dist/model/column/column.js:14:9)
    at DecorateProperty (*ProjectPath*/node_modules/reflect-metadata/Reflect.js:553:33)
    at Object.decorate (*ProjectPath*/node_modules/reflect-metadata/Reflect.js:123:24)
    at __decorate (*ProjectPath*/src/models/user.ts:4:92)
    at Object.<anonymous> (*ProjectPath*/src/models/user.ts:27:5)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Module.m._compile (*ProjectPath*/node_modules/ts-node/src/index.ts:1043:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:1176:10)

任何意见将不胜感激。

【问题讨论】:

    标签: mysql typescript express sequelize.js sequelize-typescript


    【解决方案1】:

    问题是products 不是您表格的一列。

    它是由 Sequelize 创建的用于查找关联模型的属性。

    因此,在您的情况下,您需要在 User 模型中删除 products 上方的 @Column。因为现在 Sequelize 正在尝试将其用作表中存在的列,但在您的数据库中不存在。

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多