如何使用外键指向没有循环依赖的默认值?

时间:2017-02-06 09:23:07

标签: node.js postgresql sequelize.js

我有两个模型,servicetype。服务有许多类型和一个且唯一的默认类型。

使用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来获得有效的解决方案,但它不再是外键,因此我无法确保存在类型ID。

1 个答案:

答案 0 :(得分:0)

您需要执行以下操作

Service.hasMany(Type);
Service.hasOne(Type, { as: 'defaultType' })

Type.belongsTo(Service);