将未作为外键保存在数据库中的多对多关系进行序列化



我有两个表campaignaudience,我在它们之间设置了多对多关系。运动模式,

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表中的campaignIdaudienceId不是外键。假设我有一个id为1的活动,一个id为11,12的观众。我可以发布id为43的观众,这保存在表格中,这不是一个有效的观众id。如何设置连接表id作为外键?

显然,如果我不声明campaign_audience模式手册,在自动生成字段id设置为外键。

相关内容

  • 没有找到相关文章

最新更新