无法将类型“问题的类型”分配给类型“模型的类型”

时间:2020-07-23 04:57:23

标签: nestjs sequelize-typescript

在模型中添加关系时出现错误Type 'typeof Questions' is not assignable to type 'typeof Model'.

question.model.ts

import { Column, Table, PrimaryKey, Default, DataType, Model } from "sequelize-typescript";

@Table({timestamps: true})
export class Questions extends Model<Questions> {

    @PrimaryKey
    @Default(DataType.UUIDV1)
    @Column(DataType.UUID)
    id: string;

    @Column
    question: string;

    @Column({ defaultValue: true })
    isActive: boolean;
}

options.model.ts

import { Column, Table, PrimaryKey, Default, DataType, ForeignKey, HasOne, Model } from "sequelize-typescript";
import { Questions } from "./models/questions.model";

@Table({timestamps: true})
export class Options extends Model<Options> {

    @PrimaryKey
    @Default(DataType.UUIDV1)
    @Column(DataType.UUID)
    id: string;

    @ForeignKey(() => Questions)
    @Column
    questionsId: number;

    @HasOne(() => Questions)
    question: Questions;

    @Column({ defaultValue: false })
    isCorrectAns: boolean;
}

我的用户模块

import { SequelizeModule } from '@nestjs/sequelize';
import { Questions } from './models/questions.model';
import { Options } from './options.model';

@Module({
  imports: [
    SequelizeModule.forFeature([Questions, Options])
  ],
  controllers: [UserController],
  providers: [UserService]
})
export class UserModule {}

3 个答案:

答案 0 :(得分:5)

我也遇到过同样的问题。可以通过删除类型构造函数(<Questions><Options>)来解决此问题。

就我而言,我有一个QuestionsAttributes接口,必须更改:

class TalentData extends Model<TalentData, TalentDataAttributes>

收件人:

class TalentData extends Model implements TalentDataAttributes

但这似乎是续集打字稿错误。

答案 1 :(得分:0)

根据Nest网站上的文档,Model应该来自sequelize-typescript。您正在从sequelize/types导入它。

答案 2 :(得分:0)

假设我们有两个表Likes和Quotes,而我们只想引用quote_id作为Likes表中的外键:
像这样定义外键

@ForeignKey(() => Quotes)
@Column
quote_id: number;  

@BelongsTo(() => Quotes, {onDelete: "cascade", foreignKey: "quote_id"})
quote: Quotes;

注意-请从sequelize-typescript而不是sequelize / types导入BelongsTo