在nestjs/sequalize上的sequelize typescript中定义关系时出错



我收到一个错误

没有与此调用匹配的过载

每当我尝试使用@HasMany((或@BelongsTo装饰器时。我正在使用nestjs/sequalize:^0.2.0〃;,sequelize:"^6.4.0";,并将typescript序列化:"^2.0.0";

我可能遗漏了一些琐碎的东西,但这也可能是版本控制或这三个库之间集成的问题。它可能与nestjs无关,但我认为值得一提,以防万一。

这是我的两个型号:

user.model.ts

import {
AllowNull,
Column,
DataType,
HasMany,
HasOne,
IsEmail,
Model,
Table,
Unique,
} from 'sequelize-typescript';
import { Course } from '../courses/course.model';
import { UserRole } from './enums/user.roles.enum';

@Table
export class User extends Model<User> {
@Column
firstName: string;
@Column
lastName: string;
@IsEmail
@AllowNull(false)
@Unique
@Column
email: string;
@Column({ defaultValue: false })
verified: boolean;
@Column
verificationCode: string;
@Column
passwordHash: string;

@Column({ defaultValue: UserRole.STUDENT })
role: string;
@HasMany(() => Course)
courses: Course[];
}

Course.model.ts

import {
AllowNull,
BelongsTo,
Column,
DataType,
ForeignKey,
HasOne,
IsEmail,
Model,
Table,
Unique,
} from 'sequelize-typescript';
import { User } from '../users/user.model';

@Table
export class Course extends Model<Course> {
@Unique
@Column
title: string;
@ForeignKey(() => User)
@Column
teacherId: number;
@BelongsTo(() => User)
@Column
teacher: User;
}

跟踪此问题后解决

事实证明与sequelize@6.3.5使用sequelize typescript@1.1.0&2.0.0-测试版.0

可以通过降级到来解决sequelize@6.1.1,或者从类声明中移除CCD_ 1和CCD_。

此外,在课程中还从教师属性中删除了@Column装饰器,这导致了另一个问题。

最新更新