我试图使用Sequelize来表示一些MySQL表。但是,在外键和约束方面,我遇到了一些问题。
我似乎想不出如何正确地使用它们。
下面是表的MySql:
CREATE TABLE `users` (
`server_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`pw` varchar(128) COLLATE utf8_bin DEFAULT NULL,
`lastchannel` int(11) DEFAULT NULL,
`texture` longblob,
`last_active` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `users_id` (`server_id`,`user_id`),
UNIQUE KEY `users_name` (`server_id`,`name`),
KEY `users_channel` (`server_id`,`lastchannel`),
CONSTRAINT `users_server_del` FOREIGN KEY (`server_id`) REFERENCES `servers` (`server_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;下面是我正在为续写做的工作:
module.exports = function(sequelize, DataTypes) {
var Users = sequelize.define('users', {
server_id: {type: Sequelize.INTEGER, allowNull: false},
user_id: {type: Sequelize.INTEGER, autoIncrement: true, allowNull: false, primaryKey: true},
name: {type: Sequelize.STRING(255), defaultValue: null},
pw: {type: Sequelize.STRING(128), defaultValue: null},
lastchannel: {type: Sequelize.INTEGER(11), defaultValue: null},
texture: Sequelize.BLOB,
last_active: {type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.NOW, onUpdate: Sequelize.NOW}
}, {
indexes: [
{
name: 'users_id',
unique: true,
fields: ['server_id', 'user_id']
},
{
name: 'users_name',
unique: true,
fields: ['server_id', 'name']
},
{
name: 'users_channel',
fields: ['server_id', 'lastchannel']
},
]
});
Users.removeAttribute('id');
return Users;
};正如您所看到的,我认为我已经完成了核心属性,而且它们应该是唯一的键(我认为)。我遇到问题的地方是:
CONSTRAINT `users_server_del` FOREIGN KEY (`server_id`) REFERENCES `servers` (`server_id`) ON DELETE CASCADE有人能给我指点如何最好地表示这条线吗?
谢谢您抽时间见我
发布于 2018-10-03 10:02:58
你可以试试自动续写。
从命令行导出现有表结构为js模型非常方便:
sequelize-auto -o "./models" -d database_name -h host -u username -p 3306 -x my_password -e mysql免责声明:我没有在约束条件下使用它,但是查看项目的测试,它似乎有很好的外键支持。
https://stackoverflow.com/questions/33133832
复制相似问题