Error: db.sequelize.define is not a function in NodeJS

Error: db.sequelize.define is not a function in NodeJS

我是节点的新手,在这里我要将 mysql 映射到我的节点项目。 model/User.js

const Sequelize = require('sequelize')
const db = require('../database/db.js')

module.exports = db.sequelize.define(
    'user',
    {
        user_id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        first_name: {
            type: Sequelize.STRING
        },
        last_name: {
            type: Sequelize.STRING
        },
        email: {
            type: Sequelize.STRING
        },
        password: {
            type: Sequelize.STRING
        }
    },
    {
        timestamps: false
    }
);
    

在上面的代码中 module.exports = db.sequelize.define() 出现错误,因为 db.sequelize.define 不是函数 。代码中出现此错误的原因是什么?

database/db.js

const Sequelize = require("sequelize")
const db = {}
const sequelize = new Sequelize("node","root","",{
    host: "localhost",
    dialect: "mysql",
    operatorsAliases: false,

    pool: {
        max: 5,
        min: 0,
        acquire:30000,
        idle:10000
    }
})

db.sequelize = sequelize
db.sequelize = Sequelize

module.exports = db

您遇到的问题是您的数据库文件 db.js 定义和导出 sequelize 的方式。我建议您将其更改为:

  const { Sequelize } = require('sequelize');
    const db = new Sequelize("node","root","",{
        host: "localhost",
        dialect: "mysql",
        operatorsAliases: false,
    
        pool: {
            max: 5,
            min: 0,
            acquire:30000,
            idle:10000
        }
    })
    
    // I deleted what was causing the problem

    module.exports = db;

并且在 model/User.js 中你应该用 db.define():

调用 define()
const Sequelize = require('sequelize')
const db = require('../database/db.js')

// I created an object here so you can export it
const User = db.define(
    'user',
    {
        user_id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        first_name: {
            type: Sequelize.STRING
        },
        last_name: {
            type: Sequelize.STRING
        },
        email: {
            type: Sequelize.STRING
        },
        password: {
            type: Sequelize.STRING
        }
    },
    {
        timestamps: false
    }
);

module.exports = User;
db.sequelize = sequelize
db.sequelize = Sequelize

这就是你的问题所在。 删除第二行。 或将其更改为:

db.Sequelize = Sequelize

然后不使用

const Sequelize = require('sequelize')

在您的文件中,请改用 db.Sequelize。