我需要关联两个表。 TableA有一个TableB。我可以在TableA模型中执行此操作:
TableA.hasOne( models.TableB, { as: 'TableB', foreignKey: 'someID' } );
查看SQL,尝试连接TableA.ID和TableB.someID。我真正想要的是加入TableA.someNonPrimaryKey和TableB.someID。
如何告诉sequelize加入someNonPrimaryKey?
答案 0 :(得分:3)
我知道这很老;我是为了其他可能需要答案的人而做出的回应。
您现在可以关联非主键列上的表。在您的情况下,关联为:
TableA.hasOne(TableB, {
sourceKey: 'someNonPrimaryKeyColumnOnTheSOurceModel',
foreignKey: 'matchingColumnOnTheTargetModel'
});
请注意,模型定义中的列someNonPrimaryKeyColumnOnTheSOurceModel
必须将unique
设置为true
。
您可以在此处了解更多信息:https://sequelize.org/master/manual/assocs.html
答案 1 :(得分:2)
目前在续集中这是不可能的,但你可以尝试这种方式。
HasOne和BelongsTo之间的区别,HasOne在目标模型中插入关联键,而BelongsTo在源模型中插入关联键。 关联而非hasOne等于BelongsTo
TableB.belongsTo(models.TableA, { as: 'TableA', foreignKey: 'someID', targetKey: 'notTableAID' } );
答案 2 :(得分:0)
对我来说,它通过同时执行@ thanh1101681和@King James Enejo的两个答案而起作用,只放了sourcekey或targetkey都不起作用!
{"message"=>"Bad credentials", "documentation_url"=>"https://docs.github.com/rest"}