我有两个表campaign
和audience
,我在它们之间设置了多对多关系。运动模式,
const Campaign = sequelize.define("campaign", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
campaign_name: {
type: DataTypes.STRING(50),
allowNull: false,
},
text: {
type: DataTypes.STRING(200),
allowNull: false,
},
start_date: {
type: DataTypes.INTEGER,
allowNull: false,
},
end_date: {
type: DataTypes.INTEGER,
allowNull: false,
},
});
观众模式,
const Audience = sequelize.define("audience", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false,
},
audience_name: {
type: DataTypes.STRING(50),
allowNull: false,
},
phone: {
type: DataTypes.STRING(12),
allowNull: true,
},
email: {
type: DataTypes.STRING(50),
allowNull: true,
},
});
然后我声明了多对多表campaign_audience
const CampaignAudience = sequelize.define("campaign_audience", {
audienceId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: Audience,
key: "id",
},
},
campaignId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: Campaign,
key: "id",
},
},
});
然后设置它们之间的关系,
CampaignModel.belongsToMany(AudienceModel, {
through: CampaignAudienceModel,
});
AudienceModel.belongsToMany(CampaignModel, {
through: CampaignAudienceModel,
});
现在我已经创建了所有表。campaign_audience
表中的campaignId
、audienceId
不是外键。假设我有一个id为1的活动,一个id为11,12的观众。我可以发布id为43的观众,这保存在表格中,这不是一个有效的观众id。如何设置连接表id作为外键?
显然,如果我不声明campaign_audience模式手册,在自动生成字段id设置为外键。