簡體   English   中英

如何使用 sequelize 將我的復合主鍵放在聯結表中?

[英]How can I have my composite primar key in a junction table using sequelize?

我的表 Foo 中有一個復合主鍵,而 Bar 中有一個主鍵。 當我使用 belongsToMany 語法創建聯結時,只有一個主鍵組件顯示在聯結表中(第一個被定義的組件)。 我期待看到 FooId、FooDate、BarId 和 state。

如果重要的話,我正在使用 MariaDb 10.4.21 和 sequelize v6.12.1。

  const Foo = sequelize.define("Foo", {
    id: {
      type: DataTypes.INTEGER, primaryKey: true, unique: true, allowNull: false
    },
    date: {
      type: DataTypes.DATEONLY, primaryKey: true, unique: true, allowNull: false
    },
  });

  const FooBar = sequelize.define("FooBar", {
    state: {  
      type: DataTypes.INTEGER
    }
  });

  const Bar = sequelize.define("Bar", {
    id: {
      type: Sequelize.INTEGER, primaryKey: true, unique: true, allowNull: false
    }
  });


  Foo.belongsToMany(Bar, { through: FooBar});
  Bar.belongsToMany(Foo, { through: FooBar});

我知道我可以通過使用一個主鍵來解決問題,但我想了解我的錯誤。 先感謝您。

Sequelize 不支持復合主鍵和外鍵,因此您需要將Foo中的id作為唯一的唯一鍵(理想情況下應由 DB 生成),因此每個表在FooBar中都有一個外鍵列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM