在我的程序中:
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中使用了不同的续集,但是我不确定。
有人已经看到类似的错误了吗?我搜索了几天,没有任何合适的问题,如果有人能帮助我将不胜感激,
谢谢!
答案 0 :(得分:1)
那是因为您试图在自己的文件中使用.belongsToMany。
简单说明:当您需要一个模型文件时,尚未将其中一个定义为续集模型。
尝试将index.js文件用于您的模型文件夹。 Take a look at my answer there
您可以阅读@Dorian Jakov Stern Vukotic answer。