Node.js + Sequelize:为同一模型设置两个外键的实现方法
如何在Sequelize模型中添加两个指向同一模型的外键?
嘿,这事儿我熟!你现在的问题是要给DataSurvey模型添加两个指向AppPerson的外键,但直接两次调用belongsTo会因为默认外键名重复而冲突,对吧?
解决方法很简单,只需要在每个belongsTo调用里指定自定义外键名和关联别名就可以了,具体代码如下:
DataSurvey.associate = function(models) { // 关联负责人:外键idResponsible DataSurvey.belongsTo(models.AppPerson, { foreignKey: 'idResponsible', as: 'responsiblePerson' // 别名,方便后续查询时区分 }); // 关联相关人:外键idConcerned DataSurvey.belongsTo(models.AppPerson, { foreignKey: 'idConcerned', as: 'concernedPerson' // 另一个别名 }); };
关键参数说明:
foreignKey: 直接指定你想要的外键字段名,也就是idResponsible和idConcerned,这样Sequelize就会在DataSurvey表中创建这两个字段作为外键关联到AppPerson的主键。as: 设置关联的别名,后续查询DataSurvey时,可以通过这个别名来包含对应的AppPerson数据,比如:models.DataSurvey.findOne({ include: [ { model: models.AppPerson, as: 'responsiblePerson' }, { model: models.AppPerson, as: 'concernedPerson' } ] });
这样就能完美实现你要的两个外键关联啦!
内容的提问来源于stack exchange,提问作者Olivier
相关产品推荐
相关产品推荐

