首页 > 解决方案 > Sequelize: throw new Error(`${this.name}.belongsToMany 调用的东西不是 Sequelize.Model 的子类

问题描述

在我的程序中:

电影.js

import  { DataTypes } from 'sequelize'
import Actor from './actor'
import ActorMovies from './actormovies'
import { sequelize } from '../../db/seq'

const Movie = sequelize.define('Movie', { name: DataTypes.STRING });
Movie.belongsToMany(Actor, { through: ActorMovies });

export default Movie

演员.js

import { DataTypes } from 'sequelize'
import Movie from './movie'
import ActorMovies from './actormovies'
import { sequelize } from '../../db/seq'

const Actor = sequelize.define('Actor', { name: DataTypes.STRING });
Actor.belongsToMany(Movie, { through: ActorMovies });

export default Actor

演员电影.js

import { DataTypes } from 'sequelize'
import Movie from './movie'
import Actor from './actor'
import { sequelize } from '../../db/seq'

const ActorMovies = sequelize.define('ActorMovies', {
    MovieId: {
      type: DataTypes.INTEGER,
      references: {
        model: Movie, 
        key: 'id'
      }
    },
    ActorId: {
      type: DataTypes.INTEGER,
      references: {
        model: Actor, 
        key: 'id'
      }
    }
});

export default ActorMovies

它会抛出一个错误

throw new Error(`${this.name}.belongsToMany called with something that's not a subclass of Sequelize.Model

我猜它可能在movie.js和actor.js中使用了不同的续集,但我不确定。

是否有人已经看到类似的错误?我搜索了几天没有任何合适的问题,如果有人可以帮助我将非常感激,

感谢 !

标签: node.jssequelize.js

解决方案


那是因为您试图在他们自己的文件中使用 .belongsToMany 。

简单解释:当您需要其中一个模型文件时,其中一个尚未定义为续集模型。

尝试为您的模型文件夹使用 index.js 文件。看看我那里的答案

您可以阅读@Dorian Jakov Stern Vukotic 的答案


推荐阅读