Sequelize报错:User.create is not a function 及模型导入问题
问题解决:Sequelize中
Customer.create is not a function及相关错误 问题原因
你直接导入了customer.js模型文件,但该文件导出的是模型初始化函数,并非已和Sequelize实例绑定、具备完整方法的模型类。只有通过models/index.js导出的模型,才是完成初始化、可调用create等方法的可用模型。
解决方案
修改控制器的模型导入逻辑,从models/index文件导入已初始化的Customer模型:
修正后的控制器代码
// 从models/index导出的db对象中解构Customer模型 const { Customer } = require('../../models'); module.exports = { async store (req, res) { try { const { name, email, password, country, city, state, address, postalCode } = req.body; const customer = await Customer.create({ name, email, password, country, city, state, address, postalCode }); return res.status(200).json(customer); } catch (err) { console.log(err); return res.status(500).json({ error: err.message }); } } }
补充说明
models/index.js的核心作用是自动遍历加载所有模型文件,传入Sequelize实例和DataTypes完成模型初始化,最终将所有可用模型挂载到db对象统一导出。- 直接导入
customer.js时,你拿到的是module.exports = (sequelize, DataTypes) => { ... }这个初始化函数,未传入必要参数的情况下,解构{ Customer }会得到undefined,进而触发Cannot read properties of undefined (reading 'create')错误。
内容的提问来源于stack exchange,提问作者Routfin
相关产品推荐
相关产品推荐

