gpt4 book ai didi

database - 在 Sequelize.js 种子模型中引用复合主键

转载 作者:太空狗 更新时间:2023-10-30 01:59:56 27 4
gpt4 key购买 nike

是否可以在 Sequelize 中引用复合主键?

我正在开发一款有助于整理厨房垃圾的网络应用程序。餐厅将其周和月组织成“期间”,其中 9 月的第一周为“9.1”。对于每个时期,我都需要创建一批新的成分对象,以跟踪该时期的价格和数量。我认为最好将期间主键设置为月和周的组合,因为这在数据库中是唯一的。我可能会在以后添加年份,但这不会改变我的问题。

我正在使用的数据库是 Postgres。

这是我的 Sequelize 种子文件中的周期表模型:

.then(() => queryInterface.createTable('periods', {
month: {
type: Sequelize.INTEGER,
validate: {
max: 12,
min: 1
},
unique: "monthWeekConstraint",
primaryKey: true
},
week: {
type: Sequelize.INTEGER,
validate: {
max: 4,
min: 1
},
unique: "monthWeekConstraint",
primaryKey: true
},
createdAt: {
type: Sequelize.DATE
},
updtedAt: {
type: Sequelize.DATE
}
}))

我想在我的 periodItems 表中引用上表中存储的期间,我(错误地)看起来像:

.then(() => queryInterface.createTable('periodItems', {
periodMonth: {
type: Sequelize.INTEGER,
references: {model: 'periods', key: 'monthWeekConstraint'}
},
periodWeek: {
type: Sequelize.INTEGER,
references: {model: 'periods', key: 'monthWeekConstraint'}
},
day: {
type: Sequelize.INTEGER,
validate: {
min: 1,
max: 7
}
},
...other irrelevant fields...
}))

我绝对是数据库的新手,所以如果我跑题了,我深表歉意。我已经得到了一些其他表来做我想做的事情,但我已经在这个问题上停留了几天。

最佳答案

虽然可以通过针对多个列指定 primaryKey: true 来在 Sequelize 中创建复合主键(正如您在上面所做的那样),但 Sequelize 目前不支持复合外键,因此无法引用具有复合主键的模型/表。

参见 https://github.com/sequelize/sequelize/issues/311以讨论该主题。

关于database - 在 Sequelize.js 种子模型中引用复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com