Как добавить свойства внешнего ключа и каскада с помощью Sequelize? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу реализовать этот запрос MySQL с помощью Sequelize для моей модели express. js.

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 содержат свойства belongsTo и hasMany, которые я не знаю, как использовать в этой ситуации. Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 18 июня 2020

Мой друг помог мне с этим решением. И это сработало.

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