迁移模型时,使用MySQL方言的Sequelize无法生成外键 我正在使用sequelize的命令创建模型并将其迁移到 在MySql数据库中生成表 要生成新模型:sequelize模型:create--name Demo--attributes列:string 在模型和迁移文件生成后,添加几行代码,使用给定的代码片段进行关联和外键约束: 在Comapny的派生/子表中:
在基本/父表Comapany中:迁移模型时,使用MySQL方言的Sequelize无法生成外键 我正在使用sequelize的命令创建模型并将其迁移到 在MySql数据库中生成表 要生成新模型:sequelize模型:create--name Demo--attributes列:string 在模型和迁移文件生成后,添加几行代码,使用给定的代码片段进行关联和外键约束: 在Comapny的派生/子表中:,mysql,foreign-keys,command,sequelize.js,constraints,Mysql,Foreign Keys,Command,Sequelize.js,Constraints,在基本/父表Comapany中: Company.associate = function (models) { // associations can be defined here Company.hasMany(models.Employee,{ foreignKey:"companyId", }) }; 但是它并不反映在表->更改表->外键约束中您的外键被弄乱了。。。。我认为它应该看起来更像下面
Company.associate = function (models) {
// associations can be defined here
Company.hasMany(models.Employee,{
foreignKey:"companyId",
})
};
但是它并不反映在表->更改表->外键约束中您的外键被弄乱了。。。。我认为它应该看起来更像下面这样,因为您希望在引用公司表的id字段的employee表中有一个名为companyId的字段
Employee.associate = function (models) {
// associations can be defined here
Employee.belongsTo(models.Company, {
sourceKey: "companyId",
foreignKey: "id",
onDelete: "CASCADE"
})
};
及
这一个将假定您的源密钥是您的主键,可能是id- 外键约束将反映到MySQL数据库及其 表,仅当我们随模型文件一起更改迁移文件时
- 我们必须添加迁移文件,如:
companyId:{ type: Sequelize.INTEGER, onDelete: "CASCADE", references: { model: "Comapany", key: "id" } },
- 这对我来说很成功
Company.associate = function (models) {
// associations can be defined here
Company.hasMany(models.Employee,{
foreignKey:"companyId",
})
};
companyId:{
type: Sequelize.INTEGER,
onDelete: "CASCADE",
references: {
model: "Comapany",
key: "id"
}
},