【问题标题】:Sequelize many to many relation are not saving in database as foreign keysSequelize 多对多关系不作为外键保存在数据库中
【发布时间】:2021-06-05 08:40:32
【问题描述】:

我有两个表 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,
});

现在我已经创建了所有表。问题是campaignIdaudienceId 中的campaign_audience 表不是外键。假设我有 id 为 1 的活动,以及 id 为 11,12 的受众。我可以发布 ID 为 43 的受众,并保存在不是有效受众 ID 的表中。如何将联结表 id 设置为外键?

【问题讨论】:

    标签: mysql node.js sequelize.js schema


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2012-12-19
      • 2020-11-28
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多