sequelize怎么建关联,但不引入物理外键
发布于 6 年前 作者 chengshubei 3821 次浏览 来自 问答

看了文档,还是没试出来,使用references后建表,发现还是有外键。 求教 各位大神 怎么才能使用sequelize的联表查询,又不会往数据库里建立外键。 非常感谢!!

3 回复

好像在模型对象上references意义不大,建关系的时候 constraints: false

Resource.belongsTo(Resource, {as: 'parent', foreignKey: 'pid',constraints: false});

@CaanDoll 谢大佬回复,我看文档里是说 用references 没有约束关系,但是测试了下还是创建了外键,用constraints就不会创建外键。那用references有什么其他价值吗?用constraints有没有什么缺点?看大多数人都是用references

@chengshubei 我是渣渣调包侠不是大佬。。记得前年底搞sequelize的时候,就算在model上用了references,但是查询的时候调用include方法去关联查询的时候还是会报错,必须建立模型之间的一对一、一对多、多对多的关系,比如上面的belongsTo之类的,个人觉得模型对象上的references没有什么意义。。然后物理外键有好处也有坏处,个人理解是物理外键能提高容错,但是有些场景下不能用,比如联这关个字段可能为空,或者我司在搞微服务体系下就没有物理外键,各个服务只负责一部分表。

回到顶部