【问题标题】:Sequelize() doesn't return an instance of sequelizeSequelize() 不返回 sequelize 的实例
【发布时间】:2019-04-04 08:11:12
【问题描述】:

我最近开始使用Sequelize 来获取我的 postgresql 数据库的模型。 要映射我正在使用的数据库sequelize-auto。 当我以这种方式将参数发送到其构造函数时,我能够使用 sequelize-auto 创建我的数据库的自动生成映射:

init.js

let sequelizeAutoInstance = new SequelizeAuto(dbName,username,password,options)

但是当我尝试以这种方式发送Sequelize 的实例时它不起作用:

new-init.js

let sequelizeInstance = new Sequelize(sequelizeOptions);
sequelizeAutoInstance = new SequelizeAuto(sequelizeInstance)

查看sequelize-auto ctor 我看到它运行这些行:

if (database instanceof Sequelize) {
    this.sequelize = database;
}

但是从 new Sequelize 返回的实例不会返回 Sequelize 的实例。

我错过了什么? 谢谢

【问题讨论】:

  • 可能是在您的 init.js 上您将“用户名”拼错为“用户名”吗?
  • no 这不是 :) 我在这里写帖子时拼错了。修好了

标签: node.js postgresql sequelize.js sequelize-auto


【解决方案1】:

如果我没听错的话。您需要将 sequelize 的实例传递给您的模型。如果您使用的是扩展模型,您可以简单地将实例传递给 init 选项。

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = require("../your/db/file");

class User extends Model {}

User.init({
  // Model attributes are defined here
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull defaults to true
  }
}, {
  // Other model options go here
  sequelize, // We need to pass the connection instance
  modelName: 'User' // We need to choose the model name
});

如果它的功能那么

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = require("../your/db/file");

const User = sequelize.define('User', {
  // Model attributes are defined here
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull defaults to true
  }
}, {
  // Other model options go here
});

所有这些都可以在Sequelize models 文档中找到

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2023-03-16
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多