如何使用 sequelize 将我的复合主键放在联结 table 中?
How can I have my composite primar key in a junction table using sequelize?
我的 table Foo 中有一个复合主键,Bar 中有一个主键。当我使用 belongsToMany 语法创建联结时,只有一个主键组件显示在联结 table 中(第一个被定义的组件)。我期待看到 FooId、FooDate、BarId 和状态。
我正在使用 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 生成),因此您将有一个每个 table.
FooBar
中的外键列
我的 table Foo 中有一个复合主键,Bar 中有一个主键。当我使用 belongsToMany 语法创建联结时,只有一个主键组件显示在联结 table 中(第一个被定义的组件)。我期待看到 FooId、FooDate、BarId 和状态。
我正在使用 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 生成),因此您将有一个每个 table.
FooBar
中的外键列