You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize无法识别Model:调用findAll时出现未定义类型错误

问题分析与解决方案

核心问题:模型加载代码语法错误

你在Index.js的模型加载循环里存在语法错误,导致模型未被正确初始化并挂载到db对象上:

原错误代码:

const model = require(path.join(__dirname, file));(sequelize, Sequelize.DataTypes);

这里的分号打断了函数调用逻辑,require返回的模型定义函数没有被执行,model只是函数本身而非初始化后的模型实例;后面的(sequelize, Sequelize.DataTypes)变成了无意义的独立表达式,完全起不到传入参数初始化模型的作用。

修复步骤

  1. 修正模型加载代码
    将Index.js中的错误行修改为:
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);

这样才能正确调用模型定义函数,生成Sequelize模型实例并赋值给model,进而挂载到db对象上。

  1. 修正模型文件拼写错误(可选但推荐)
    你的Product模型里将attributes拼写成了atributes,虽当前不影响模型加载,但可能引发后续配置异常,建议修正:
// 原错误代码
let atributes = { ... }
// 修正为
let attributes = { ... }
  1. 验证修复结果
    修改完成后重启服务,调用db.Product.findAll()将不再报undefined错误。此时用res.send(Object.keys(db))应返回["Product","sequelize","Sequelize"],说明模型已正确挂载。

额外检查点

  • 确保Product模型文件名为Product.js(大小写完全匹配),Index.js按文件名加载模型,大小写不匹配会导致模型无法被识别。
  • 确认config/config.js中的数据库配置正确,能正常连接MySQL,避免后续查询出现连接类错误。

内容的提问来源于stack exchange,提问作者Jose M Muñoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:10:52