Я написал приложение nodejs с mysql db и Sequalize как ORM. Все в порядке. Я определяю модели и миграцию для создания базы данных и сидеров. Я хочу создать модель продукта , в которой у меня есть два внешних ключа: (categoryId & shopId).
когда я создавал файлы миграции, я создаю модель магазина за моделью продукта. и это создает для меня проблему. когда я хочу создать таблицу в базе данных с помощью команды «sequelize db: migrate», я получаю эту ошибку:
ОШИБКА: не удается добавить ограничение внешнего ключа
Я прочитал это ссылка и знаю, что это не причина моей проблемы. но как я могу исправить эту ошибку? Я пытаюсь определить вверх и вниз как функцию asyn c, но эта ошибка не устранена.
module.exports = {
up: (queryInterface, Sequelize) => queryInterface.createTable(
'products', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
name: {
type: Sequelize.STRING(255),
allowNull: false,
},
description: {
type: Sequelize.STRING(1024),
allowNull: false,
},
price: {
type: Sequelize.FLOAT,
allowNull: false,
},
old_price: {
type: Sequelize.FLOAT,
allowNull: false,
},
type: {
type: Sequelize.STRING(255),
},
height: {
type: Sequelize.INTEGER,
},
width: {
type: Sequelize.INTEGER,
},
categoryId: {
type: Sequelize.INTEGER,
references: {
model: 'categories',
key: 'id',
},
},
shopId: {
type: Sequelize.INTEGER,
references: {
model: 'shops',
key: 'id',
},
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
},
},
),
down: (queryInterface, Sequelize) => queryInterface.dropTable('products'),
}