Ошибка При Определении Отношений В sequelize-машинописный Текст На nestjs/sequelize

#sequelize.js #nestjs #sequelize-typescript

Вопрос:

Я получаю сообщение об ошибке

Никакая перегрузка не соответствует этому вызову

Всякий раз, когда я пытаюсь использовать @hasMany() или @belongsTo декораторы. Я использую nestjs/sequelize: «^0.2.0», sequelize: «^6.4.0» и sequelize-машинопись: «^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[];
}
 

Курс.модель.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;
}
 

Ответ №1:

Решена после устранения этой проблемы

Оказывается, это связано с sequelize@6.3.5 с обоими последовательностями-машинописный текст @1.1.0 и @2.0.0-бета.0

Можно обойти, понизив рейтинг до sequelize@6.1.1, или удаление <Course> <User> типов и из объявления класса.

Также удаление @Column декоратора из собственности учителя в курсе, что вызвало другую проблему.