提问者:小点点

如何用Sequelize添加外键和级联属性?


我想用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属性,我不知道在这种情况下如何使用这些属性。 请帮我处理这个。


共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'
      }
    }