私はあなたのコードを実行しようとしましたが、行はうまく作成されているようです:
CREATE TABLE IF NOT EXISTS `main_dashboard` (`title` VARCHAR(255), `id` INTEGER NOT NULL auto_increment , `idClient` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `main_client` (`id` INTEGER NOT NULL auto_increment, `clientId` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;
clientIdに追加されmain_client、 にidClient追加されますmain_dashboard
hasOneメソッドが何をするのか少し混乱しているようです。呼び出すたびhasOneに関連付けが作成されるため、コードは 2 つのテーブルを効果的に 2 回関連付けます。あなたが探している方法はbelongsTo
各クライアントに 1 つのダッシュボードが必要な場合、コードは次のようになります。
MainClient.hasOne(MainDashboard, { foreignKey: 'clientId' })
MainDashboard.belongsTo(MainClient, { foreignKey: 'clientId' })
これにより、テーブルのフィールドに関連するテーブルにclientIdフィールドが作成されますmain_dashboardidmain_client
つまりbelongsTo、メソッドを呼び出しているテーブルにリレーションを追加し、hasOne引数として指定されたテーブルに追加します。