Product.belongsTo 调用的不是 Sequelize.Model 的子类
Product.belongsTo called with something that's not a subclass of Sequelize.Model
我开始使用 squeli-cli 生成的 models/index 文件,现在这在关联中产生了一个错误
我的模型产品我的产品可以属于很多类别:
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Product extends Model {
static associate(models) {
Product.belongsTo(models.ProductType,{as:'family',foreignKey:'product_family'});
}
};
Product.init({
id:{
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: {
type: DataTypes.STRING,
allowNull: false,
validate:{
isAlphanumeric: true
}
},
price:{
type: DataTypes.FLOAT,
allowNull: false,
validate:{
len: [0.1,10_000],
isEven(value) {
if (value <= 0.1) {
throw new Error('price must be 0.2$ or higher');
}
}
}
},
product_code:{
type: DataTypes.STRING,
unique:true,
allowNull: false,
validate:{
isAlphanumeric: true,
}
},
product_quantity:{
type: DataTypes.INTEGER,
allowNull: false,
validate:{
isNumeric: true,
len: [1,1_000_000_000],
isEven(value) {
if (value <= 0) {
throw new Error('quantity must be 1 or higher');
}
}
}
},
notification: {
type: DataTypes.BOOLEAN,
// allowNull defaults to true
},
}, {sequelize,modelName: 'Product',});
return Product;
};
我的产品类型型号这个型号有很多产品:
'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class ProductType extends Model {
static associate(models) {
ProductType.hasMany(models.Product, {as:'ProductType', foreignKey:'product_family'});
}
};
ProductType.init({
id:{
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: {
type: DataTypes.STRING,
allowNull: false,
validate:{
isAlphanumeric: true
}
},
}, { sequelize,modelName: 'product_Type',});
return ProductType;
};
这是我的 models/index
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
//config
const config = require('../config/database');
//declaracion de objeto db
const db = {};
//inicializar la conexion
const sequelize = new Sequelize(config.database,config.username,config.password,{
host: config.host,
dialect: config.dialect,
});
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
//cada modelo del directorio lo vinculamos a db
db[model.name] = model;
});
//realizar las asociaciones de los modelos
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
你得到了这个错误
error image
我该如何解决这个问题
您将模型 ProductType
命名为 product_Type
,但您尝试使用 models.ProductType
而不是 models.product_Type
来访问它。
我开始使用 squeli-cli 生成的 models/index 文件,现在这在关联中产生了一个错误
我的模型产品我的产品可以属于很多类别:
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Product extends Model {
static associate(models) {
Product.belongsTo(models.ProductType,{as:'family',foreignKey:'product_family'});
}
};
Product.init({
id:{
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: {
type: DataTypes.STRING,
allowNull: false,
validate:{
isAlphanumeric: true
}
},
price:{
type: DataTypes.FLOAT,
allowNull: false,
validate:{
len: [0.1,10_000],
isEven(value) {
if (value <= 0.1) {
throw new Error('price must be 0.2$ or higher');
}
}
}
},
product_code:{
type: DataTypes.STRING,
unique:true,
allowNull: false,
validate:{
isAlphanumeric: true,
}
},
product_quantity:{
type: DataTypes.INTEGER,
allowNull: false,
validate:{
isNumeric: true,
len: [1,1_000_000_000],
isEven(value) {
if (value <= 0) {
throw new Error('quantity must be 1 or higher');
}
}
}
},
notification: {
type: DataTypes.BOOLEAN,
// allowNull defaults to true
},
}, {sequelize,modelName: 'Product',});
return Product;
};
我的产品类型型号这个型号有很多产品:
'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class ProductType extends Model {
static associate(models) {
ProductType.hasMany(models.Product, {as:'ProductType', foreignKey:'product_family'});
}
};
ProductType.init({
id:{
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
name: {
type: DataTypes.STRING,
allowNull: false,
validate:{
isAlphanumeric: true
}
},
}, { sequelize,modelName: 'product_Type',});
return ProductType;
};
这是我的 models/index
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
//config
const config = require('../config/database');
//declaracion de objeto db
const db = {};
//inicializar la conexion
const sequelize = new Sequelize(config.database,config.username,config.password,{
host: config.host,
dialect: config.dialect,
});
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
//cada modelo del directorio lo vinculamos a db
db[model.name] = model;
});
//realizar las asociaciones de los modelos
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
你得到了这个错误 error image
我该如何解决这个问题
您将模型 ProductType
命名为 product_Type
,但您尝试使用 models.ProductType
而不是 models.product_Type
来访问它。