【发布时间】:2019-01-28 04:24:54
【问题描述】:
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...
}))
我绝对是数据库的新手,所以如果我离开了,我深表歉意。我已经让其他几张桌子做我想做的事,但我已经被这个问题困住了几天。
【问题讨论】:
标签: database postgresql sequelize.js