Model sequelize nodejs TypeError: (intermediate value).init is not a function

时间:2021-06-05 15:54:22

标签: javascript mysql node.js sequelize.js

我是第一次用 ORM sequelize 制作应用程序,我到了模型部分,但是当我运行它时,它指向我无法解决的错误,如果有人知道或可以帮助我,提前谢谢你,我会在下面留下型号代码和错误信息

const Model = require('sequelize');
const DataTypes = require('sequelize');

class User extends Model {
  static init(sequelize) {
    super.init({
      name: DataTypes.STRING,
      password: DataTypes.INTEGER,
      email: DataTypes.STRING,
    }, {
      sequelize
    })
  }
}

module.exports = User;

这是错误信息: 超级初始化({ ^

TypeError: (intermediate value).init 不是函数 在 Function.init (/home/lagos/Documents/MyProjectSGBD/api/src/models/User.js:7:11) 在对象。 (/home/lagos/Documents/MyProjectSGBD/api/src/database/index.js:8:6) 在 Module._compile (internal/modules/cjs/loader.js:778:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) 在 Module.load (internal/modules/cjs/loader.js:653:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:593:12) 在 Function.Module._load (internal/modules/cjs/loader.js:585:3) 在 Module.require (internal/modules/cjs/loader.js:692:17) 在要求(内部/模块/cjs/helpers.js:25:18) 在对象。 (/home/lagos/Documents/MyProjectSGBD/api/src/app.js:4:1) [nodemon] 应用程序崩溃 - 在启动之前等待文件更改...

1 个答案:

答案 0 :(得分:1)

我认为您的导入不正确。应该是

const { Sequelize, DataTypes, Model } = require('sequelize');

另外,为什么不用 sequelize.define 定义模型。 如果你是通过扩展 Model 来定义它们,那么试试这个

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

class User extends Model {}

User.init({
  name: DataTypes.STRING,
  password: DataTypes.INTEGER,
  email: DataTypes.STRING,
},{
  sequelize
});

console.log(User === sequelize.models.User); // true

参考 -> https://sequelize.org/master/manual/model-basics.html