#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
.