Product.Принадлежит к тому, что вызывается с помощью чего-то, что не является подклассом Sequelize.Модель

#mysql #node.js #sequelize.js #associations #sequelize-cli

Вопрос:

я начал использовать файл моделей/индексов, который генерирует squeli-cli, и теперь это вызывает у меня ошибку в ассоциациях

моя модель продукта мой продукт может быть отнесен ко многим категориям:

 const { Model } = require('sequelize');  module.exports = (sequelize, DataTypes) =gt; {  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 lt;= 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 lt;= 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) =gt; {  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; }; 

а это мои модели/индекс

 '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 =gt; {  return (file.indexOf('.') !== 0) amp;amp; (file !== basename) amp;amp; (file.slice(-3) === '.js');  })  .forEach(file =gt; {  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 =gt; {  if (db[modelName].associate) {  db[modelName].associate(db);  } });  db.sequelize = sequelize; db.Sequelize = Sequelize;  module.exports = db; 

и y получил этот образ ошибки ошибки

как я могу это решить

Ответ №1:

Вы назвали модель ProductType как product_Type , но пытаетесь получить к ней доступ с помощью models.ProductType вместо models.product_Type .