我创建了三个表:designer,tag,designer_tag.designer_tag是一个带有两个外键的表,它们是designer的id和tag的id。
表[设计器]:
module.exports = (sequelize, DataTypes) => {
let Designer = sequelize.define('Designer', {
id: {
allowNull: false,
autoIncrement: true,
comment: 'ID',
primaryKey: true,
type: DataTypes.INTEGER(11).UNSIGNED
},
name: {
allowNull: false,
comment: 'name',
defaultValue: '',
type: DataTypes.STRING(10)
},
begin_time: {
allowNull: false,
comment: 'begin_time',
defaultValue: 0,
type: DataTypes.INTEGER(10).UNSIGNED
},
avatar: {
allowNull: false,
comment: 'avatar',
defaultValue: '',
type: DataTypes.STRING(120)
},
description: {
allowNull: false,
comment: 'description',
defaultValue: '',
type: DataTypes.STRING(120)
},
create_time: {
allowNull: false,
comment: 'create time',
defaultValue: 0,
type: DataTypes.INTEGER(10).UNSIGNED
}
}, {
comment: 'designer',
freezeTableName: true,
tableName: 'designer',
timestamps: false,
underscored: true
});
Designer.associate = models => {
Designer.hasOne(models.DesignerTag);
};
return Designer;
};
表[标记]:
module.exports = (sequelize, DataTypes) => {
let Tag = sequelize.define('Tag', {
id: {
allowNull: false,
autoIncrement: true,
comment: 'ID',
primaryKey: true,
type: DataTypes.INTEGER(11).UNSIGNED
},
name: {
allowNull: false,
comment: 'name',
defaultValue: '',
type: DataTypes.STRING(20)
},
create_time: {
allowNull: false,
comment: 'create time',
defaultValue: 0,
type: DataTypes.INTEGER(10).UNSIGNED
}
}, {
comment: 'tag',
freezeTableName: true,
indexes: [{
name: 'name',
method: 'BTREE',
fields: ['name'],
unique: true
}],
tableName: 'tag',
timestamps: false,
underscored: true
});
Tag.associate = models => {
Tag.hasOne(models.DesignerTag);
};
return Tag;
};
表[designer_tag]:
module.exports = (sequelize, DataTypes) => {
let DesignerTag = sequelize.define('DesignerTag', {
id: {
allowNull: false,
autoIncrement: true,
comment: 'ID',
primaryKey: true,
type: DataTypes.INTEGER(11).UNSIGNED
},
create_time: {
allowNull: false,
comment: 'create time',
defaultValue: 0,
type: DataTypes.INTEGER(10).UNSIGNED
}
}, {
comment: 'designer tag table',
freezeTableName: true,
indexes: [{
name: 'designer_tag_unique',
method: 'BTREE',
fields: ['designer_id', 'tag_id'],
unique: true
}],
tableName: 'designer_tag',
timestamps: false,
underscored: true
});
DesignerTag.associate = models => {
DesignerTag.belongsTo(models.Tag);
DesignerTag.belongsTo(models.Designer);
};
return DesignerTag;
};
最后,表[designer_tag]如下所示:
CREATE TABLE `designer_tag` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`create_time` int unsigned NOT NULL DEFAULT '0' COMMENT 'create_time',
`designer_id` int unsigned DEFAULT NULL,
`tag_id` int unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `designer_tag_unique` (`designer_id`,`tag_id`),
KEY `tag_id` (`tag_id`),
CONSTRAINT `designer_tag_ibfk_3` FOREIGN KEY (`designer_id`) REFERENCES `designer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `designer_tag_ibfk_4` FOREIGN KEY (`tag_id`) REFERENCES `tag` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='designer tag';
自动创建的密钥(tag_id
)是不是很奇怪? Sequeize版本是5.21.10。 请有同样情况的人说说为什么会这样。 谢谢。
难道这个代码不是自动创建外部字段tag_id
吗??
DesignerTag.associate = models => {
DesignerTag.belongsTo(models.Tag);
DesignerTag.belongsTo(models.Designer);
};
所以逻辑上标记表和设计器表有多对多的关系。
我有一个app和两个MySQL数据库交互,其中一个是副本。当我需要执行事务时,我使用主数据库,当我需要访问一些历史数据或执行一些成本更高的选择时,我使用从数据库。 我尝试了以下操作: 在中,我配置了以下服务: 我将使用这两个上下文,如下所示: 我遇到以下异常: InvalidOperationException:尝试激活“StockApp.DataModels.MyMainDbContext”时,
显然,在示例中,我将它们设置为字符串属性,但实际上它们是其他类型的。 注意:Object1和Object2实际上是从SOAP服务器所需的XML模型生成的类。所以我不能修改它们。 在我的代码中,我必须访问Object1或Object2的'name'属性,这取决于不同的因素。这个点是一个事件处理程序,所以在某一时刻,它捕获一个用Object1调用的事件,而在其他时间,它捕获一个用Object2调用的事
我有这个方法,它在Dart 2中编译没有问题。但是,在运行时,我得到以下错误 输入
本文向大家介绍Django 创建您的第一个模型,包括了Django 创建您的第一个模型的使用技巧和注意事项,需要的朋友参考一下 示例 通常在models.py应用程序子目录下的文件中定义模型。在Model类的django.db.models模块是一个很好的起点类来扩展你的模型。例如: 模型中的每个属性代表数据库中的一列。 title 是最大长度为100个字符的文本 author是ForeignKe
问题内容: 据我了解,Flask应该创建一个线程并在其上运行第二个线程,但是我看到总是有两个进程在运行,而不是线程。即使是最简单的应用程序。 您可以看到两个进程正在运行: 这是怎么回事 问题答案: 这是因为您正在使用重新加载器运行开发服务器。重新加载程序监视文件系统中的更改,并以不同的过程启动真实应用程序,因此共有两个过程。 您可以通过点按或致电来禁用重新加载器。
问题内容: 我注意到eclipse最近创建了一个.settings目录,其中包含1个文件,我想知道是否应该将此添加到版本控制中?SVN? 还有,这是新的吗?我已经使用eclipse已有相当长的一段时间了,但从未注意到它。 目录中文件的内容是这样的: 这些设置是否应该在工作区范围内而不是特定于项目? 问题答案: 此文件记录项目特定的设置与工作空间首选项。 我注意到该文件通常是在将常规Java项目转换
我有50人,而这50个人在5个团队中(10人可能不在一个团队中)。我想在这50个人中生成7个小组,这样每个小组中没有两个人在同一个团队中。 这些组不必具有相同数量的人。 这些组可以有两个人在同一团队中,但必须积极地最小化 这些组的大小应大致相同 理想情况下,我想在python中解决这个问题,但我并不特别关心我用哪种语言实现它。
首先,打开Android Studio并选择Create new Project,然后它会让你输入一个名字,你可以任意取一个名字,比如:Weather App。然后你需要输入公司域名。如果你不会真正发布这个app,这个字段就不是特别重要了,但是如果你有的话可以使用自己的域名。然后任意选择一个目录作为这个项目的保存地址。 下一步,它会让你选择最小的API版本。我们选择API 15,因为我们有一个库需