Sequelize:抛出新的Error(`$ {this.name} .belongsToMany,该错误不是Sequelize.Model的子类

时间:2020-07-14 14:55:34

标签: node.js sequelize.js

在我的程序中:

movie.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

actor.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

actormovies.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中使用了不同的续集,但是我不确定。

有人已经看到类似的错误了吗?我搜索了几天,没有任何合适的问题,如果有人能帮助我将不胜感激,

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

尝试将index.js文件用于您的模型文件夹。 Take a look at my answer there

您可以阅读@Dorian Jakov Stern Vukotic answer