例如,我有几个由这个伪代码表示的表:
let user = sequelize.define('User', /* attributes */);
let task = sequelize.define('Task', /* attributes */);
task.belongsTo(user, { foreignKey: "userId" });
sequelize.sync();
生成的task
表:
CREATE TABLE `task` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userId` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `userId` (`userId`),
CONSTRAINT `task_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON UPDATE CASCADE ON DELETE NO ACTION
)
它会生成外键名task_ibfk_1
所以问题是:
在某些情况下,我使用query-generator
,但它没有提供太多。
注意:
正如我现在所看到的(2016年12月21日)此功能正在进行很长时间:https://github.com/sequelize/sequelize/issues/5212
答案 0 :(得分:0)
这是我使用迁移的解决方案:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.sequelize.query("ALTER TABLE task ADD CONSTRAINT task_ibfk_1 FOREIGN KEY (idUser) REFERENCES user(id) ON UPDATE CASCADE ON DELETE NO ACTION;");
},
down: function (queryInterface, Sequelize) {
return queryInterface.sequelize.query("ALTER TABLE task DROP FOREIGN KEY task_ibfk_1;");
}
};