ORM工具 Sequelize: No Sequelize instance passed

异常:No Sequelize instance passed

  • 异常描述:
    • 参照官方文档,使用Model.init模型定义后,启动项目抛出异常。使用sequelize.define 定义模型,项目正常
    • 链接实例为自定义的链接实例(问题出在此处)
  • 异常信息:

    • ...\node_modules\sequelize\lib\model.js:662
      throw new Error("No Sequelize instance passed");

官方文档内容:

 

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

class User extends Model {}

User.init({
  // 在这里定义模型属性
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull 默认为 true
  }
}, {
  // 这是其他模型参数
  sequelize, // 我们需要传递连接实例
  modelName: 'User' // 我们需要选择模型名称
});

// 定义的模型是类本身
console.log(User === sequelize.models.User); // true

 

 

个人实际代码内容:

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


class Catalog extends Model {
}


Catalog.init({
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    project: {
        type: DataTypes.INTEGER,
        allowNull: false
    },
    // 在这里定义模型属性
    name: {
        type: DataTypes.STRING,
        //设置,默认值
        //defaultValue:"xxx",
        //不允许 为null
        allowNull: false
    },
    summary: {
        type: DataTypes.STRING
        // allowNull 默认为 true
    },
    text: {
        type: DataTypes.TEXT,
        // allowNull 默认为 true
    }
}, {
    // 这是其他模型参数
     mysqlConnection, // 我们需要传递连接实例


  // 我们需要选择模型名称 表名称 modelName: 'catalog', tableName: "catalog", // 不要默认时间戳 数据库没有时间戳字段时,设置为false,否则报错 SequelizeDatabaseError: Unknown column 'createdAt' in 'field list' timestamps: false, freezeTableName: true });

 

 

此时实际代码抛出异常信息:throw new Error("No Sequelize instance passed");

解决办法:

修改标红处代码为:
sequelize: mysqlConnection, // 我们需要传递连接实例

 

posted @ 2022-06-20 14:24  众生皆草木  阅读(278)  评论(0编辑  收藏  举报