[Sequelize] called with something that’s not a subclass of sequelize.model

亂叫阿醇
3 min readJul 10, 2022

今天遇到這個問題 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" });

--

--

亂叫阿醇
0 Followers

這邊主要分享自己查資料找不到的資訊,若之後有人遇到相同的問題便可省去不少時間。