【问题标题】:Error: db.sequelize.define is not a function in NodeJS错误:db.sequelize.define 不是 NodeJS 中的函数
【发布时间】:2021-01-25 11:13:53
【问题描述】:

我是 node 新手,在这里我要将 mysql 映射到我的 node 项目。 模型/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 不是函数。代码中出现这个错误的原因是什么?

数据库/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的代码?
  • @Runsis 我用 db.js 代码编辑了问题。
  • 好的,我找到了问题并添加了答案:D Kamalka!希望您可以将其标记为已接受

标签: node.js sequelize.js


【解决方案1】:

您的数据库文件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;

【讨论】:

  • 非常感谢您的代码。我真的很感激,我学到了很多。
【解决方案2】:
db.sequelize = sequelize
db.sequelize = Sequelize

这就是给你带来问题的原因。 删除第二行。 或将其更改为:

db.Sequelize = Sequelize

然后不要使用

const Sequelize = require('sequelize')

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

【讨论】:

  • 谢谢。 db.**S**equelize = Sequelize 这是我的代码的问题。当我纠正它的工作原理。
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多