/ / Sequelize:外部キーに参加する方法 - join、foreign-keys、sequelize.js

Sequelize:外部キーに参加する方法 - 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.primaryKeyをtableA.fk_tableAで置き換えるにはどうすればよいですか?

私はまたtableAを2回定義しようとしました: 2つの異なる構造(実際のプライマリキーとfk_tableAをプライマリキーとして持つもの)でも動作しません(別の場所で実際のtableAモードが必要なため)。

誰かにアイデアはありますか? Sequelizeのバグですか?

回答:

回答№1は0

tableA.primaryKeyをtableA.fk_tableAで置き換えるにはどうすればよいですか?

tableA.fk_tableAはありません。 しかし、もし存在すれば、tableA.fk_tableA列はtableAのキー列に対するFKであるため、名前を付けたと考えられます。これは、カラムfk_tableAの命名規則です。同様に、belongsToは、FKであるカラムをfk_tableAではなくfk_tableAと呼ぶように追加します。あなたのhasOneと同様に、tableAにはカラムfk_tableBにtableB PK(FKをPKよりも別の列にしたい場合は、targetKey経由でそう言います)。

ターゲットテーブルの後にFKsという名前を付けた場合、tableA.fk_tableB = tableB.fk_tableAが必要なようです。あなたが今それらの名前を付けた方法は、tableA.fk_tableB = tableB.fk_tableBが必要なようです。

私は2つの外部キーに2つのテーブルを結合する必要があります

それは 非常にありそうもない 上記の結合が必要であることを示します。 列をFKと宣言すると、ソース/参照列の値は常にターゲット/参照列の値になります。ここで、ターゲットはPKです。 1つのテーブルへのFKと別のテーブルへのFKへのそのような結合は、PKが異なるテーブルからのものであっても、同じPK値を共有する行のみを返します。