【问题标题】:How to add Foreign Key and Cascade properties with Sequelize?如何使用 Sequelize 添加外键和级联属性?
【发布时间】:2020-06-18 13:30:25
【问题描述】:

我想用 Sequelize 为我的 express.js 模型实现这个 MySQL 查询。

CREATE TABLE `Serivce_Area` (
  `service_area_id` int auto_increment primary key,
  `service_id` int not null,
  `area_id` int not null,  
  FOREIGN KEY (service_id) REFERENCES Service_Credential(service_id) ON UPDATE CASCADE ON DELETE CASCADE,
  FOREIGN KEY (area_id) REFERENCES Area_Details(area_id) ON UPDATE CASCADE ON DELETE CASCADE
);

这里我还有另外两个表,名为 Service_Credential 和 Area_Details,两个主键分别命名为 service_id 和 area_id。这就是我所做的。

const serviceArea = sequelize.define('Serivce_Area', {
    service_area_id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    service_id:{
        type: Sequelize.INTEGER,
        allowNull: false
    },
    area_id: {
        type: Sequelize.INTEGER,
        allowNull: false
    },
});

但是我在添加外键和级联属性时遇到了麻烦。我已经检查了文档。但我仍然不知道该怎么做。此外,一些 stackoverflow 答案包含 belongsTohasMany 属性,我不确定在这种情况下如何使用。请帮我解决一下这个。

【问题讨论】:

  • 如果您还打算在代码中使用这些模型,则需要先创建所有模型。我建议您查看以下文档,因为它将解释模型之间的关系以及 SQL 的生成方式:sequelize.org/v5/manual/associations.html#foreign-keys 如果您仍然卡住,我可以从您的代码中提供一个基本示例
  • 如果您想在更新和删除时应用级联,您可以执行cerviceCredential.belongsTo(serviceArea, { onUpdate: 'CASCADE', onDelete: 'CASCADE' }) 之类的操作。这将取决于您的模型关系
  • 让我试试这个。谢谢顺便说一句。

标签: mysql sequelize.js


【解决方案1】:

我的朋友帮我解决了这个问题。它奏效了。

    service_area_id: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    service_id: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      references: {
        model: 'Service_Credential',
        key: 'service_id'
      }
    },
    area_id: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      references: {
        model: 'Area_Details',
        key: 'area_id'
      }
    }

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 2019-07-26
    • 2018-03-02
    • 2020-07-09
    • 2020-04-15
    • 2012-11-24
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多