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 来访问它。