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

使用Sequelize的create方法时出现TypeError错误求助

Sequelize create方法报错:TypeError: Cannot read properties of undefined (reading 'create')

错误信息

TypeError: Cannot read properties of undefined (reading 'create')

相关代码

Signup.js

const express = require('express')
const router = express.Router()
const {models: { Employees } } = require('../models')
// const  Employees  = require('../models/Employees')(sequelize, DataTypes); 
// const  Employees  = require('../models/Employees').Employees; 

router.get('/', async (req, res) => {
    const employees = await Employees.findAll()
    res.json(employees)
})
router.post('/', async(req, res)=>{
    const employee = req.body
    await Employees.create(employee)
    res.json(employee)
})

module.exports = router

Employees 模型文件

const {sequelize, DataTypes} = require("sequelize");

module.exports = (sequelize, DataTypes) => {
    const Employees = sequelize.define("Employees", {
       
        firstname: DataTypes.STRING,
        middlename: DataTypes.STRING,
        lastname: DataTypes.STRING,
        email: DataTypes.STRING,
        phoneNo: DataTypes.INTEGER,
        password: DataTypes.STRING,
        department: DataTypes.STRING,        
    })

    return Employees
}

models/index.js

const dbConfig = require('../config/db.config')

const { Sequelize } = require('sequelize')

const sequelize = new Sequelize(dbConfig.DATABASE, dbConfig.USER, dbConfig.PASSWORD, {
    host: dbConfig.HOST,
    dialect: dbConfig.DIALECT
})

const db = {};
db.sequelize = sequelize;
db.models = {};
db.models.Emmployees = require('./Employees')(sequelize, Sequelize.DataTypes);
db.models.Assets = require('./Assets')(sequelize, Sequelize.DataTypes);

module.exports = db

问题分析与解决方案

核心问题

models/index.js中存在拼写错误:db.models.Emmployees多写了一个字母m,正确名称应为db.models.Employees。这导致你在Signup.js中解构导入的Employees变量为undefined,调用create方法时触发报错。

解决步骤

  1. 修正models/index.js的拼写错误
    将:

    db.models.Emmployees = require('./Employees')(sequelize, Sequelize.DataTypes);
    

    修改为:

    db.models.Employees = require('./Employees')(sequelize, Sequelize.DataTypes);
    
  2. 保持正确的导入方式
    继续使用Signup.js中的解构导入即可:

    const {models: { Employees } } = require('../models')
    

    你尝试的另外两种导入方式无效的原因:

    • 第一种方式需要传入sequelize和DataTypes实例,但Signup.js中没有这两个变量,直接调用会报错
    • 第二种方式错误,因为Employees模型文件导出的是一个函数,不是包含Employees属性的对象,无法通过.Employees获取
  3. 可选导入方式
    也可以直接从db对象中获取模型:

    const db = require('../models');
    const Employees = db.models.Employees;
    

内容的提问来源于stack exchange,提问作者Dagim Debebe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:17:23