开发者问题收集

模型 sequelize nodejs TypeError:(中间值).init 不是一个函数

2021-06-05
1285

我第一次使用 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;

这是错误消息: super.init({ ^

TypeError:(中间值).init 不是函数 at Function.init (/home/lagos/Documents/MyProjectSGBD/api/src/models/User.js:7:11) at Object. (/home/lagos/Documents/MyProjectSGBD/api/src/database/index.js:8:6) at Module._compile (internal/modules/cjs/loader.js:778:30) at 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) 在 require (internal/modules/cjs/helpers.js:25:18) 在 Object. (/home/lagos/Documents/MyProjectSGBD/api/src/app.js:4:1) [nodemon] 应用程序崩溃 - 正在等待文件更改后再启动...

1个回答

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

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

此外,为什么不使用 sequelize.define 定义模型。 如果您通过扩展模型来定义它们,请尝试这个

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

Tarun Chawla
2021-06-05