如何通过 Sequelize QueryInterface 创建彼此具有外键关系的表?
The .createTable()
方法接受列字典。您可以在中看到有效属性的列表的文档.define() https://sequelize.org/v7/class/lib/sequelize.js%7ESequelize.html#instance-method-define,特别是通过查看[attributes.column.*]
params 表中的行。
要创建具有外键关系的属性,请使用“references”和“referencesKey”字段:
例如,以下内容将创建一个users
表,和一个user_emails
引用用户表的表。
queryInterface.createTable('users', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
}).then(function() {
queryInterface.createTable('user_emails', {
userId: {
type: Sequelize.INTEGER,
references: { model: 'users', key: 'id' }
}
})
});
Sequelize 需要哪些列和辅助表?例如,似乎需要特定的列,例如createdAt或updatedAt。
看来标准模型将期望id
, updatedAt
, and createdAt
每个表的列。
queryInterface.createTable('users', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
createdAt: {
type: Sequelize.DATE
},
updatedAt: {
type: Sequelize.DATE
}
}
如果你设置paranoid to true http://docs.sequelizejs.com/manual/tutorial/models-usage.html#including-soft-deleted-records在你的模型上,你还需要一个deletedAt
时间戳。