我最近开始使用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
的故事,我发现它行如下:
if (database instanceof Sequelize) {
this.sequelize = database;
}
但是返回新Sequelize形式的实例不会返回Sequelize实例。
我想念什么? 谢谢
答案 0 :(得分: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文档中找到