[Sequelize] called with something that’s not a subclass of sequelize.model
今天遇到這個問題 debug 紀錄一下~
首先先檢查 DB 欄位 是否 和 Models 完全一樣(type也要檢查)
再來檢查是否有重複引用造成無限引用的問題,例如超簡易範例:
//Model: Project
const { Sequelize } = require("sequelize");const sequelize = require("../db/sequelize");
const MyProject = {projectId: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true,}};
const Project = sequelize.define("my_project", MyProject);const {User} = require("./models/User");
Project.belongsTo(User, { foreignKey: "id" });
module.exports = {Project};===================分隔線====================//Model: User
const { Sequelize } = require("sequelize");const sequelize = require("../db/sequelize");const MyUser = {userId: {type: Sequelize.INTEGER,primaryKey: true,autoIncrement: true,}};
const User= sequelize.define("my_user", MyUser);const {Project} = require("./models/Project"); //錯誤關鍵
User.belongsTo(Project, { foreignKey: "id" }); //錯誤關鍵
module.exports = {User};
上面就是我卡住的Bug…會造成2個檔案無限引用
User 引用 Project , 然後 Project 引用 User …互相引用無限循環~
解決方式 將上面"錯誤關鍵"刪除,合併關聯在某支檔案,用hasMany取代belongsTo
Project.hasMany(User, { foreignKey: "id" });