#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
декоратора из собственности учителя в курсе, что вызвало другую проблему.