У меня есть две модели, service
и type
. Служба имеет много типов и один и только тип по умолчанию.Как использовать внешний ключ для указания значения по умолчанию без циклической зависимости?
Использование Sequelize Я пытаюсь сделать следующее
// This part is working
Service.hasMany(Type);
Type.belongsTo(Service);
// This part is not
Type.hasOne(Service, { foreignKey: 'defaultTypeId' })
Вторая часть вызывает эту ошибку
Server start problem : Error: Cyclic dependency found. type is dependent of itself.
Dependency chain: device -> type -> service => type
Я понимаю ошибку, но я не могу найти в документации способ сделать это , Является ли это возможным ? Это проблема проектирования SQL? Вы видите альтернативные решения?
У меня есть рабочее решение, определяющее вручную модель defaultTypeId
в сервисной модели, но она больше не является внешним ключом, поэтому я не могу гарантировать, что идентификатор типа существует.
Может быть, вы можете использовать Sequelize миграции для того, чтобы достичь этого? Первой миграцией будет создание таблицы «Сервис», затем создайте таблицу «Тип» и после этого измените таблицу «Сервис», добавив столбец 'defaultTypeId', который будет внешним ключом. В таком случае вы должны использовать 'constraints: false' при создании связи между моделями, однако ограничение будет существовать в вашей базе данных. – piotrbienias