Sequelize:如何加入外键

时间:2017-06-01 16:31:37

标签: join foreign-keys sequelize.js

我使用的是Sequelize和Node.js,我需要在2个外键上加入2个表,

tableA.hasOne(tableB, { foreignKey: 'fk_tableB' });
tableB.belongsTo(tableA, {foreignKey: 'fk_tableB' });

(顺便说一句,我不了解" targetKey")的功能 但是我只能在tableA.primaryKey = tableB.fk_tableB上获得连接。 如何用tableA.fk_tableA替换tableA.primaryKey?

我还尝试定义两次tableA:在2个不同的结构中(一个用真正的主键,另一个用fk_tableA作为主键),但它也不起作用(因为我需要真正的tableA模式)另一个地方)。

有人有想法吗?这是Sequelize的错误吗?

1 个答案:

答案 0 :(得分:0)

  

如何用tableA.fk_tableA替换tableA.primaryKey?

没有tableA.fk_tableA。但是如果有的话,我们希望你把它命名为,因为列tableA.fk_tableA是表A中键列的FK。因为这是命名列fk_tableA的惯例。类似地,我们期望像你这样的属于向tableA PK添加一个FK列,将其称为fk_tableA,而不是fk_tableB。就像你的hasOne给tableA一个列fk_tableB到tableB PK。 (如果你想要一个FK到PK以外的其他列,你可以通过targetKey这样说。)

如果你在目标表之后命名了FK,那么你似乎想要tableA.fk_tableB = tableB.fk_tableA。你现在命名它们的方式,你似乎想要tableA.fk_tableB = tableB.fk_tableB。

  

我需要在2个外键上加入2个表

极不可能您需要上面的联接。将列声明为FK表示源/引用列的值始终是目标/引用列的值。这里的目标是PK。即使PK来自不同的表,FK到一个表和FK到另一个表的这种连接只会返回共享相同PK值的行。